欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-12-20 16:20:16
本文实例讲述了java编程实现tcp网络通讯的方法。分享给大家供大家参考,具体如下: tcp(transmission control protocol 传输控制协议)是...

本文实例讲述了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 socket编程技巧总结》、《java文件与目录操作技巧汇总》、《java数据结构与算法教程》、《java操作dom节点技巧总结》和《java缓存操作技巧汇总

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

上一篇:

下一篇: