socket
TCP
单线程
示例一
简单的一个实例,服务器收到客户端发送的问候。结束。
1 | import org.junit.Test; |
示例二
服务器收到后,给客户端反馈信息。结束
1 | import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream; |
示例三(简单聊天)
TCP 实现客户端和服务器简单聊天
客户端部分代码
1 | import java.io.*; |
服务器部分代码
1 | import java.io.*; |
TCP聊天室
https://blog.csdn.net/sinat_42483341/article/details/97987329
多线程
客户端代码
1 | import java.io.BufferedReader; |
服务器代码
1 | import java.io.BufferedReader; |
UDP
示例一
1 | import org.junit.Test; |
示例二
1 | import java.lang.*; |
心得体会
- 基于Socket的TCP编程:
客户端Socket的工作过程包含以下三个步骤:
(1)创建 Socket :根据指定服务端的 IP 地址或端口号构造 Socket 类对象
(2)打开连接到 Socket 的输入/出流;按照一定的协议对 Socket 进行读/写操作:使用 getInputStream()方法获得输入流,使用 getOutputStream()方法获得输出流,进行数据传输
(3)关闭Socket
服务器程序的工作过程包含以下四个基本的步骤:
(1)调用 ServerSocket(int port) :创建一个服务器端套接字,并绑定到指定端口 上。用于监听客户端的请求
(2)调用 accept():监听连接请求
(3)调用 该Socket类对象的 getOutputStream() 和 getInputStream ():获取输出流和输入流
(4)关闭ServerSocket和Socket对象
2.编程中用到了IO 流的一些知识。socket编程中用Socket类对象的 getOutputStream() 和 getInputStream ()获取输出流和输入流,之后要用别的流来包装它。在读取字符时,使用字节流比较好,因此可以先用转换流inputstreamread包装getInputStream (),然后再用缓冲流包装。OutputStream功能并不强大,但是可以和java.io.PrintStream类配合使用,使之能够输出一行。
3.UDP是不可靠的,如果你先运行UDP客户端,它是不会有异常的,它只管发;而使用TCP的时候,它是会去握手的,如果没有连接上会抛出异常。
4.写代码的时候要记得写好程序结束的代码。单线程可以用retrun返回特殊值来标识结束。
参考:
https://blog.csdn.net/Chianz632/article/details/80018531
https://blog.csdn.net/qq_40791843/article/details/90675746
https://blog.csdn.net/sinat_42483341/article/details/97987329