这个Socket的例子是只有一个服务器端(Server)和一个客户端(Client)
package test_Socket_base;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) {
ServerSocket server; //其方法accept 用来监听客户端的链接
Socket socket; //服务器端Socket对象
DataInputStream in; //数据输入输出流
DataOutputStream ou;
try {
server = new ServerSocket(22222); //启动监听,端口为22222
while(true) {
socket = server.accept();
in = new DataInputStream(socket.getInputStream()); //获取Socket中的出入输出流,以完成通信
ou = new DataOutputStream(socket.getOutputStream());
//---------- 这里可以换成任何数据包的接受和发送 ----------
String receive = in.readUTF(); //读取客户端信息
ou.writeUTF("已收到信息!谢谢!");//向客户端发送信息
//注意:读取和发送的顺序不能错
ou.close();
in.close();
socket.close();
System.out.println(receive);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
package test_Socket_base;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
Socket socket; //客户端Socket对象
DataInputStream in; //输入输出流
DataOutputStream ou;
try {
socket = new Socket("127.0.0.1",22222); //新new一个客户端Socket,制定其链接的服务器地址和端口号
in = new DataInputStream(socket.getInputStream());//获取Socket中的出入输出流,以完成通信
ou = new DataOutputStream(socket.getOutputStream());
//---------- 这里可以换成任何数据包的接受和发送 ----------
ou.writeUTF("send"); //向服务器端发送信息
String receive = in.readUTF(); //接受服务器的反馈信息
in.close();
ou.close();
socket.close();
System.out.println(receive);
} catch (Exception e) {
e.printStackTrace();
}
}
}