socket网络编程原理:
通信原理图
通过这幅原理图我们不难发现,两个socket实体之间通过TCP/ip协议进行通信。所以为了方便理解,便有了服务器端和客户端(其实它们之间并没有严格的界限,因为它们都可以进行I/O操作)
1.使用ServerSocket创建TCP的服务器端(主动姿态去接收请求)
构造方法如下:
ServerSocket ss = new ServerSocket(int port);//port是一个有效的端口0~65535(一般推荐使用1024以上的端口)
ServerSocket ss = new ServerSocket(int port,int backlog);//backlog是一个用来改变队列长度的参数
ServerSocket ss = new ServerSocket(int port,int backlog,InetAddress localAddr);//localAddr是机器出现多个IP地址的情况下允许绑定固定的IP地址
监听客户端请求的方法
Socket accept();该方法返回一个客户端请求的Socket对象,如果没能发现,则一直处于等候状态,线程也会被堵塞。
一段代码示例:
ServerSocket ss = new ServerSocket(3000);
while(true){
Socket s = ss.accept();
OutputStream os =s.OutputStream();
os.write("hello world!!!".getBytes("utf-8"));
os.close();
s.close();
}
该段代码能实现向3000端口发送请求的客户端发送hello world!!!
2.使用socket进行通信
授予访问网络的权限