模拟了一个聊天的程序,通过xml通讯,以下是server端,及client端的部分代码。
server端:
public class Server {
private ServerSocket ss;
private Socket socket;
ServerFrame serverFrame = null;
public Server(ServerFrame serverFrame) {
this.serverFrame = serverFrame;
try {
/*新建套接字服务器*/
ss = new ServerSocket(ConfigFactory.getInstance().getLocal_port());
while (true) {
try{
/*侦听并接受到此套接字的连接,接受到的链接扔到新建的thread处理*/
socket = ss.accept();
new CreateServerThread(socket,serverFrame).start();
}catch(Exception e){
throw new Exception();
}
}
} catch (IOException e) {
e.printStackTrace();
}catch(Exception e1){
e1.printStackTrace();
}finally{
if(ss!=null){
try{
ss.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
}
public class CreateServerThread extends Thread{
private Socket socket;
private BufferedReader in;
private PrintWriter out;
ServerFrame serverFrame;
public CreateServerThread(Socket s,ServerFrame serverFrame) throws Exception{
this.socket = s;
this.serverFrame = serverFrame;
}
public void run(){
try{
/*侦听并接受到此套接字的连接*/
/*返回此套接字的输入流--(字节流转换为字符流,并且从字符输入流中读取文本)*/
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
/*返回此套接字的输出流*/
out = new PrintWriter(socket.getOutputStream(), true);
/*读取BufferedReader中的字符流*/
String line=null;
StringBuffer sb = new StringBuffer();
while((line=in.readLine())!=null){
sb.append(line+"\n");
}
/*读取一个文本行*/
line = sb.toString();
/*接受socket端发送过来的信息,并显示在页面上*/
MessageForm message = new ParseXml().parse(line);
serverFrame.setText(message.getName() + " 说: " + message.getTime() + "\n " + message.getContent() + "\n");
}catch(Exception e){
e.printStackTrace();
}finally{
if(out!=null){
try{
in.close();
}catch(Exception e){
e.printStackTrace();
}
out.close();
}
if(in!=null){
try{
in.close();
}catch(Exception e){
e.printStackTrace();
}
}
if(socket!=null){
try{
socket.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
}
client端:
public class Client {
Socket socket;
BufferedReader in;
PrintWriter out;
public Client(String server_ip,int server_port,String str) {
try {
this.init(str);
/*创建一个流套接字并将其连接到指定主机上的指定端口号*/
socket = new Socket(server_ip, server_port);
/*返回此套接字的输入流--(字节流转换为字符流,并且从字符输入流中读取文本)*/
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
/*返回此套接字的输出流*/
out = new PrintWriter(socket.getOutputStream(), true);
// BufferedReader line = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(str.getBytes())));
BufferedReader line = new BufferedReader(new InputStreamReader(new FileInputStream("d:\\oneXml.xml")));
out.println(line.readLine());
line.close();
out.close();
in.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public InputStream init(String message){
BuildXml bx = new BuildXml();
MessageForm form = new MessageForm();
String tempPath = "d:\\oneXml.xml";
form.setContent(message);
form.setIp("127.0.0.1");
form.setName("大脸猫");
form.setTime(new SimpleDateFormat("yyyy/MM/dd hh:mm").format(new Date()).toString());
return null;
}
}
分享到:
相关推荐
描述中提到 "DELPHI SOCKET 应用演示 网络通信初级例子 含生成服务端例子",这表明该压缩包包含了一个简单的教学示例,用于帮助初学者理解如何在 Delphi 7 中实现客户端和服务端的 Socket 通信。Socket 编程通常包括...
本测试案例专注于HP Socket的初级使用,旨在帮助初学者理解和实践Socket通信的基本原理和操作。以下将详细阐述Socket测试的相关知识点。 首先,让我们了解什么是Socket。Socket,又称为“套接字”,是网络编程中的...
这个“基于SOCKET套接字的小程序”显然旨在为初级程序员提供一个学习和实践的平台,帮助他们理解如何使用SOCKET进行网络通信。下面将详细阐述SOCKET套接字的相关知识点。 1. **什么是SOCKET套接字?** SOCKET套接...
Java Socket网络编程是Java开发中实现网络通信的基础,它提供了客户端和服务器端进行数据交换的接口。在Java SDK中,`java.net`...通过这些基本组件,开发者可以构建出复杂的网络应用,实现不同计算机之间的数据交换。
6. **简单易用的界面**:SocketTool的界面设计友好,操作直观,无论是初级开发者还是经验丰富的网络工程师都能迅速上手。 7. **自由度高**:用户可以根据需要配置各种参数,如超时时间、重试次数、缓冲区大小等,以...
"socket初学,高手勿BS"这个标题暗示我们将探讨Socket编程的初级概念,适合初学者入门。描述中提到的编译过程和运行命令,表明我们有两个Java程序,一个是MyServer,另一个是MyClient,它们将通过Socket进行交互。 ...
Socket接口源自UNIX系统,后来被广泛应用于Windows和其他操作系统,为开发者提供了一种标准的方式来创建网络应用程序。本教程面向VC++初、中级学习者,旨在帮助你们理解和掌握Socket网络通信的基本概念和实践技巧。 ...
在Android平台上进行Socket开发是构建网络通信应用的关键技术之一,特别是在需要实现设备间数据传输时。这份源代码提供了一个简单的示例,展示了如何在Android客户端和PC之间建立连接,实现文件共享。虽然它可能适用...
初级的Socket编程示例可能包括一个简单的客户端和服务器程序,客户端连接服务器,发送一条消息,然后接收并显示服务器的响应。服务器则监听连接,接收客户端消息,并返回一条确认消息。 9. **多线程应用** 对于...
在本项目中,"基于Java的socket的网络聊天程序"是一个初级程序员使用Java Socket API实现的练习项目,旨在理解并应用网络通信的基本概念。 首先,我们要理解Java中的Socket。Socket是TCP/IP协议族的一部分,它提供...
总的来说,"VC编写的socket简单聊天程序"是一个基于VC和Winsock的初级示例,它可以帮助初学者理解Socket编程的基本概念,包括网络连接、数据交换以及简单的用户交互。虽然对于经验丰富的开发者来说,这个程序可能...
Java Socket 简单成绩管理系统是一个基于JAVA编程语言和Socket通信技术实现的初级项目,它主要目的是帮助初学者理解如何运用Socket进行网络通信,并在实际应用中管理学生的成绩。在这个系统中,通常会包含服务器端...
本主题聚焦于"基于Socket的TCP和UDP聊天程序代码",提供了完整的Java工程文件,帮助开发者理解如何利用这两种传输协议创建聊天应用程序。TCP(传输控制协议)和UDP(用户数据报协议)是Internet协议族中的两种主要...
VB.NET是一种基于.NET框架的编程语言,用于构建各种应用程序,包括网络通信程序。Socket编程是网络编程中的基础,它允许程序通过网络发送和接收数据。本项目是一个简单的VB.NET Socket程序,展示了如何在VB.NET中...
SANGFOR SSL v7.0 远程应用发布功能是一项旨在提升企业网络安全性和便捷性的技术,它允许用户通过SSL(Secure Socket Layer)虚拟私有网络访问内网的应用程序,而无需在本地设备上安装客户端软件。这一功能在2016...
- **特点**: 相较于 BSD Socket,在 DOS 下提供的 WATTCP 接口更简单直观,更适合初级用户。由于 DOS 不具备像 Unix 那样的强大文件系统支持,因此 WATTCP 的设计更偏向于直接支持 TCP/IP 通信。 - **兼容性**: ...
Socket,通常被称为套接字,是网络编程中的一个接口,它允许应用程序通过网络发送和接收数据。在操作系统层面,Socket是进程间通信(IPC)的一种方式,特别用于实现跨网络的通信。在TCP/IP协议栈中,Socket提供了低...
本文将详细讲解C++与Socket通信的基本概念、实现过程以及相关实例,旨在帮助初级学习者理解并掌握这一技术。 首先,Socket(套接字)是网络编程中的一个重要概念,它为应用程序提供了在网络层面上发送和接收数据的...
Socket,也称为套接字,是应用层与传输层之间的接口,它允许编程人员编写能够通过网络进行通信的应用程序。在C++中,通常使用Berkeley Sockets API来实现Socket通信。这个API提供了一系列的函数,如`socket()`、`...
在IT领域,Socket编程是构建网络应用程序的核心技术之一,尤其对于网络通信的实现至关重要。本教程旨在为初学者提供一个基础的Socket编程学习路径,帮助理解网络通信的基本原理,并掌握利用Socket进行程序开发的方法...