首页 > 开发 > Java > 正文

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

2024-07-13 10:10:28
字体:
来源:转载
供稿:网友

本文实例讲述了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程序设计有所帮助。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表