源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2022-10-29 13:36 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:JAVA编程实现TCP网络通讯的方法示例
本文实例讲述了JAVA编程实现TCP网络通讯的方法。分享给大家供大家参考,具体如下: TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。 由IETF的RFC 793定义,在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。 基于TCP网络通讯实现的类主要有服务器端的ServerSocket用客户端的Socket。 [b]通讯流程:[/b] 打开服务器,等待客户端连接-->客户端连接上服务器-->数据通讯。 [b]代码实现步骤:[/b] 1. 创建服务器端(ServerSocket)对象或客户端(Socket)对象。 2. 建立起服务器与客户端连接 3. 通过输入输出流进行文件(数据)通讯 4. 通讯结束 ,关闭资源 。 [b]一个简单的小例子,服务端:[/b]
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();
    }
  }
}

[b]客户端:[/b]
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相关内容感兴趣的读者可查看本站专题:《[url=http://www.1sucai.cn/Special/924.htm]Java Socket编程技巧总结[/url]》、《[url=http://www.1sucai.cn/Special/687.htm]Java文件与目录操作技巧汇总[/url]》、《[url=http://www.1sucai.cn/Special/632.htm]Java数据结构与算法教程[/url]》、《[url=http://www.1sucai.cn/Special/830.htm]Java操作DOM节点技巧总结[/url]》和《[url=http://www.1sucai.cn/Special/682.htm]Java缓存操作技巧汇总[/url]》 希望本文所述对大家java程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部