java 网络通讯_JAVA编程实现TCP网络通讯的方法示例

本文实例讲述了JAVA编程实现TCP网络通讯的方法。分享给大家供大家参考,具体如下:

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

由IETF的RFC 793定义,在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。

基于TCP网络通讯实现的类主要有服务器端的ServerSocket用客户端的Socket。

通讯流程:

打开服务器,等待客户端连接-->客户端连接上服务器-->数据通讯。

代码实现步骤:

1. 创建服务器端(ServerSocket)对象或客户端(Socket)对象。

2. 建立起服务器与客户端连接

3. 通过输入输出流进行文件(数据)通讯

4. 通讯结束 ,关闭资源 。

一个简单的小例子,服务端:

public class SocketServer {

public static void main(String[] args) {

try {

// 创建一个服务器ServerSocket,并指定端口号为5120

ServerSocket mServerSocket = new ServerSocket(5120);

// 等待客户端连接

Socket socket = mServerSocket.accept();

// 连接上客户端后,获取客户端输入流信息

InputStream is = socket.getInputStream();

// 通过获取缓冲数据方式来读取文本信息

BufferedReader br = new BufferedReader(new InputStreamReader(is));

// 获取文本信息

String line;

StringBuffer sb = new StringBuffer();

while ((line = br.readLine()) != null) {

sb.append(line);

}

System.out.println(sb.toString());

socket.shutdownInput();

// 收到客户端信息后,回复客户端信息

OutputStream os = socket.getOutputStream();

PrintWriter pw = new PrintWriter(os);

pw.write("收到回复,我是服务端");

pw.flush();

// 关闭流通常放在finally中操作

os.close();

br.close();

is.close();

pw.close();

socket.close();

mServerSocket.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

客户端:

public class ClientSocket {

public static void main(String[] args) {

try {

// 创建客户端Socket,指定主机和端口

Socket mSocket = new Socket("localhost", 5120);

// 通过输入流向服务器发数据

OutputStream os = mSocket.getOutputStream();

PrintWriter pw = new PrintWriter(os);

pw.write("来自客户端Socket的数据,你收到了吗?");

pw.flush();

mSocket.shutdownOutput();

// 收取服务端的回复信息

InputStream is = mSocket.getInputStream();

// 通过获取缓冲数据方式来读取文本信息

BufferedReader br = new BufferedReader(new InputStreamReader(is));

// 获取文本信息

String line;

StringBuffer sb = new StringBuffer();

while ((line = br.readLine()) != null) {

sb.append(line);

}

System.out.println(sb.toString());

// 关闭流通常放在finally中操作

br.close();

is.close();

pw.close();

os.close();

mSocket.close();

} catch (UnknownHostException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

运行时,要先启动服务端,然后启动客记户端,通常网络通讯会与多线程交织在一起。

希望本文所述对大家java程序设计有所帮助。

在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的ICQ、国内腾讯公司开发的OICQ。随着网络聊天一类的聊天系统的发展日新月异,因此产生了制作一个类似QQ的网络聊天工具。Java是一种程序设计语言,它具有简单的、完全面向对象以及与平台无关的结构,也具有可移植性、高性能和安全性,并提供了多线程的功能,而Java语言最大的成功之处在于它的平台无关性和具有强大的网络编程功能,基于Java网络编程的强大功能,本人将用Java编写一个网络聊天系统。 论文首先论述了系统的开发背景,并对所用到的开发工具与关键技术做了简单的介绍。接着对系统的研究意义,研究现状及设计目标进行分析,通过对系统需求和可行性进行分析,确定了系统的功能模块,并画出相应的功能结构图、模块图和数据流图。其次按系统总体设计的结果,对系统中的数据库进行结构设计。 一般来说,聊天工具大多数由客户端程序和服务器程序,外加服务器端用于存放客户数据的数据库组成,本系统采用客户机/服务器架构模式,通过Java提供的Socket类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的,而Java提供的多线程功能,用多线程可完成多点对多点的聊天。数据库管理系统用SQL Server2000,完成并通过JDBC-ODBC桥访问数据库。聊天系统完成后将可进行多人对多人的聊天,对好友进行添加、删除,对新用户的注册,发送消息、接受消息,传输文件等功能。界面设计细分化,方便使用者操作和理解。服务器实现了查询和修改等功能,程序逻辑联系较紧密。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值