Java实现TCP通信
服务端开两个线程,一个负责发送数据,一个负责接收数据
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
public class TCPServer {
public void startServer() {
ServerSocket serverSocket;
final Socket socket;
final OutputStream os;
try {
serverSocket = new ServerSocket(8888);
socket = serverSocket.accept();
os=socket.getOutputStream();
new Thread() {
@Override
public void run() {
while(true) {
BufferedReader input;
try {
input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String clientInputStr = input.readLine();//这里要注意和客户端输出流的写方法对应,否则会抛 EOFException
System.out.println("客户端发过来的内容:" + clientInputStr);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}.start();
new Thread() {
@Override
public void run() {
PrintStream out;
while(true) {
try {
// 发送键盘输入的一行
out = new PrintStream(os);
String s = new BufferedReader(new InputStreamReader(System.in)).readLine();
out.println("收到消息:"+ s);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}.start();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
public static void main(String[] args) {
TCPServer server=new TCPServer();
server.startServer();
}
}
客户端代码比较复杂,先用telnet命令连接这个端口充当客户端
如果弹出“telnet不是内部或外部命令”,哈,恭喜你,你的telnet服务没打开,怎么打开,请点下面的连接
http://xinzhi.wenda.so.com/a/1520435305205501
看下效果