在tcp通信中,一般都是阻塞的,如果要实现非阻塞,我们可以使用多线程也可以使用nio中相关的类。这里我使用的是多线程的方式实现非阻塞。
服务器端:
1.创建ServerSocket对象,绑定监听端口;
2.调用accept()方法对客户端进行监听;
3.使用多线程对用户进行读操作,并反馈;
客户端:
1.创建Socket对象,通过IP和端口号和服务器进行连接;
2.分别使用多线程对服务器端进行读写操作;
代码如下:
服务器端:
package sency.one;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
private ServerSocket ss;
private int port = 8000;
public Server() throws IOException {
// 创建接收端的ServerSocket
ss = new ServerSocket(port);
System.out.println("服务器启动!!!");
}
public static void main(String args[]) throws IOException {
new Server().service();
}
private void service() {
// TODO Auto-generated method stub
while (true) {
Socket socket = null;
try {
// 通过accept()方法进行监听,返回一个socket
socket = ss.accept();
DataOutputStream os = new DataOutputStream(socket.getOutputStream());
package sency.one;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public