模拟了一个聊天的程序,通过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,又称为“套接字”,是网络编程中的...
在"大数据技术原理及应用课实验7:Spark初级编程实践"中,我们主要关注Spark的两个核心知识点:数据读取和Spark应用程序的开发流程。 首先,Spark提供了一种简单的方式去访问不同的数据源,包括本地文件系统和...
这个“基于SOCKET套接字的小程序”显然旨在为初级程序员提供一个学习和实践的平台,帮助他们理解如何使用SOCKET进行网络通信。下面将详细阐述SOCKET套接字的相关知识点。 1. **什么是SOCKET套接字?** SOCKET套接...
Java Socket网络编程是Java开发中实现网络通信的基础,它提供了客户端和服务器端进行数据交换的接口。在Java SDK中,`java.net`...通过这些基本组件,开发者可以构建出复杂的网络应用,实现不同计算机之间的数据交换。
适合人群:初级到中级Python开发人员,希望掌握网络编程基本技能的学习者。 使用场景及目标:适用于网络编程初学者,帮助他们理解和实现在Python中创建网络应用程序的方法。具体目标包括了解TCP/IP协议、socket编程...
6. **简单易用的界面**:SocketTool的界面设计友好,操作直观,无论是初级开发者还是经验丰富的网络工程师都能迅速上手。 7. **自由度高**:用户可以根据需要配置各种参数,如超时时间、重试次数、缓冲区大小等,以...
"socket初学,高手勿BS"这个标题暗示我们将探讨Socket编程的初级概念,适合初学者入门。描述中提到的编译过程和运行命令,表明我们有两个Java程序,一个是MyServer,另一个是MyClient,它们将通过Socket进行交互。 ...
Socket接口源自UNIX系统,后来被广泛应用于Windows和其他操作系统,为开发者提供了一种标准的方式来创建网络应用程序。本教程面向VC++初、中级学习者,旨在帮助你们理解和掌握Socket网络通信的基本概念和实践技巧。 ...
在Android平台上进行Socket开发是构建网络通信应用的关键技术之一,特别是在需要实现设备间数据传输时。这份源代码提供了一个简单的示例,展示了如何在Android客户端和PC之间建立连接,实现文件共享。虽然它可能适用...
C#高并发高性能Socket源代码集:适用于物联网、MES系统及游戏服务器的高阶应用,C# 高并发高性能socket源代码。 包括tcp客户端和服务器端,udp客户端和服务器端。 所有都包括socket流控制。 此代码属于上层代码,主要...
初级的Socket编程示例可能包括一个简单的客户端和服务器程序,客户端连接服务器,发送一条消息,然后接收并显示服务器的响应。服务器则监听连接,接收客户端消息,并返回一条确认消息。 9. **多线程应用** 对于...
在本项目中,"基于Java的socket的网络聊天程序"是一个初级程序员使用Java Socket API实现的练习项目,旨在理解并应用网络通信的基本概念。 首先,我们要理解Java中的Socket。Socket是TCP/IP协议族的一部分,它提供...
总的来说,"VC编写的socket简单聊天程序"是一个基于VC和Winsock的初级示例,它可以帮助初学者理解Socket编程的基本概念,包括网络连接、数据交换以及简单的用户交互。虽然对于经验丰富的开发者来说,这个程序可能...
此代码属于上层代码,主要应用于大批量物联网项目,mes系统及游戏服务器,不建议初级拿后,中级可以买来学学。 它用于物联网行业.mes系统以及大型集控设备有非常大的支持。 ,C#; 高并发高性能; Socket源代码; TCP...
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 通信。 - **兼容性**: ...