Java Socket编程之TCP编程

TCP协议是面向连接的、可靠的、有序的、以字节流的方式发送数据,通过三次握手方式建立连接,形成传输数据的通道,在连接中进行大量数据的传输,效率会稍低

Java中基于TCP协议实现网络通信的类

客户端的Socket类

服务器端的ServerSocket类

Socket通信的步骤

                ① 创建ServerSocket和Socket

                ② 打开连接到Socket的输入/输出流

                ③ 按照协议对Socket进行读/写操作

                ④ 关闭输入输出流、关闭Socket

服务器端:

① 创建ServerSocket对象,绑定监听端口

                ② 通过accept()方法监听客户端请求

                ③ 连接建立后,通过输入流读取客户端发送的请求信息

                ④ 通过输出流向客户端发送乡音信息

                ⑤ 关闭相关资源

**

/**

        * 基于TCP协议的Socket通信,实现用户登录,服务端

        *///1、创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口ServerSocket serverSocket =newServerSocket(10086);//1024-65535的某个端口//2、调用accept()方法开始监听,等待客户端的连接Socket socket = serverSocket.accept();//3、获取输入流,并读取客户端信息InputStream is = socket.getInputStream();        InputStreamReader isr =newInputStreamReader(is);        BufferedReader br =newBufferedReader(isr);        String info = null;        while ((info = br.readLine()) != null) {            System.out.println("我是服务器,客户端说:"+ info);        }        socket.shutdownInput();//关闭输入流//4、获取输出流,响应客户端的请求OutputStream os = socket.getOutputStream();        PrintWriter pw =newPrintWriter(os);        pw.write("欢迎您!");        pw.flush();//5、关闭资源pw.close();        os.close();        br.close();        isr.close();        is.close();        socket.close();        serverSocket.close();

客户端:

                ① 创建Socket对象,指明需要连接的服务器的地址和端口号

                ② 连接建立后,通过输出流想服务器端发送请求信息

                ③ 通过输入流获取服务器响应的信息

                ④ 关闭响应资源 

//客户端//1、创建客户端Socket,指定服务器地址和端口Socket socket =newSocket("localhost",10086);//2、获取输出流,向服务器端发送信息OutputStream os = socket.getOutputStream();//字节输出流PrintWriter pw =newPrintWriter(os);//将输出流包装成打印流pw.write("用户名:admin;密码:123");pw.flush();socket.shutdownOutput();//3、获取输入流,并读取服务器端的响应信息InputStreamis= socket.getInputStream();BufferedReader br =newBufferedReader(newInputStreamReader(is));Stringinfo =null;while((info=br.readLine())!null){ System.out.println("我是客户端,服务器说:"+info);}//4、关闭资源br.close();is.close();pw.close();os.close();socket.close();

应用多线程实现服务器与多客户端之间的通信

              ① 服务器端创建ServerSocket,循环调用accept()等待客户端连接

              ② 客户端创建一个socket并请求和服务器端连接

              ③ 服务器端接受苦读段请求,创建socket与该客户建立专线连接

              ④ 建立连接的两个socket在一个单独的线程上对话

              ⑤ 服务器端继续等待新的连接     

//服务器线程处理//和本线程相关的socketSocket socket =null;//publicserverThread(Socket socket){this.socket = socket;}publicvoid run(){//服务器处理代码}//============================================//服务器代码ServerSocket serverSocket =newServerSocket(10086);Socket socket =null;intcount=0;//记录客户端的数量while(true){socket = serverScoket.accept();ServerThread serverThread =newServerThread(socket); serverThread.start();count++;System.out.println("客户端连接的数量:"+count);}

[链接]()

进群:697699179可以获取Java、大数据各类入门学习资料!

这是我的微信公众号【编程study】各位大佬有空可以关注下,每天更新Java、大数据学习方法,感谢!

学习中遇到问题有不明白的地方,推荐加小编Java|大数据学习群:697699179内有视频教程 ,直播课程 ,等学习资料,期待你的加入

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 网络编程----TCPNo24 【 public class Server { public static...
    征程_Journey阅读 1,288评论 0 4
  • 1、Java支持基于流的通信和基于包的通信 基于流的通信使用TCP协议(传输控制协议)进行数据传输,传输是无损可靠...
    哦00阅读 334评论 0 0
  • 网络编程的概述 网络编程的实质就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换。 一.OSI网络模型...
    思念挥霍阅读 391评论 0 0
  • 什么是Socket Socket的概念很简单,它是网络上运行的两个程序间双向通讯的一端,既可以接收请求,也可以发送...
    墨雨轩夏阅读 776评论 0 23
  • Java Socket编程 对于Java Socket编程而言,有两个概念,一个是ServerSocket,一个是...
    天空下天的月亮阅读 2,080评论 10 41