JavaWeb之TCP连接
使用Socket套接字来实现一个简单的TCP连接,因为十分简单,所以注释直接写在代码上。 客户端代码:
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class TCPClient {
public static void main(String args[]) {
Socket socket = null;
OutputStream os = null; //输出
InputStream is = null; //输入
byte[] data = "收到了吗".getBytes();
try {
socket = new Socket("localhost",4400); //与服务器建立连接
os = socket.getOutputStream();
is = socket.getInputStream();
os.write(data); //向服务器发送信息
int n = is.read(data); //接受来自服务器的信息,注意这里有阻塞
System.out.println(new String(data,0,n));
}catch(Exception e) {
e.printStackTrace();
}finally {
try {
is.close();
os.close();
socket.close();
}catch(Exception e) {
System.out.println("关闭出错了呢!");
e.printStackTrace();
}
}
}
}
服务器代码:
import java.io.InputStream;
import java.io.OutputStream;
import java.net.*;
public class TCPServer {
public static void main(String args[]) {
try {
//开启服务器端口,端口号是4400
ServerSocket server = new ServerSocket(4400);
System.out.println("server start!");
//在循环中,可接受多个客户端发来的信息,为每个客户端建立一个线程
while(true) {
Socket s = server.accept(); //注意这是一个阻塞过程
new ResponseThread(s);
}
}catch(Exception e) {
e.printStackTrace();
}
}
}
class ResponseThread extends Thread{
Socket s;
public ResponseThread(Socket s) {
this.s=s;
start(); //调用这个方法后会执行run()
}
public void run() {
InputStream is = null;
OutputStream os = null;
try {
is = s.getInputStream();
os = s.getOutputStream();
byte[] b = new byte[1024];
int n = is.read(b); //接受来自客户端的消息
String send = new String(b,0,n);
System.out.println("受到的消息是:"+send);
String response = "收到了!";
b = response.getBytes();
os.write(b); //想客户端发送消息
}catch(Exception e) {
e.printStackTrace();
}
}
}
最后运行结果如下图: 服务器结果
客户端结果
Thank You For Reading