简单模拟Socket通信
只需要两个文件编写,一个写服务器端代码,一个写客户端代码
服务器端代码
package socket;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketTCP01Server {
public static void main(String[] args) throws IOException {
//1.在本机的9999端口监听,等待连接(9999不能是已被占用的端口)
ServerSocket serverSocket = new ServerSocket(9999);
System.out.println("服务端在9999端口监听,等待连接");
//2.当没有客户端连接9999端口时,程序会阻塞,等待连接
// 如果有客户端连接,则会返回Socket对象,程序继续
Socket socket = serverSocket.accept();
System.out.println("服务端socket: " + socket.getClass());
//3.通过getInputStream()获取socket关联到输入流对象
InputStream inputStream = socket.getInputStream();
//4.IO读取
byte[] buf = new byte[1024];
int readLen = 0;
while ((readLen = inputStream.read(buf)) != -1) {
System.out.printf(new String(buf, 0, readLen));
}
inputStream.close();
socket.close();
serverSocket.close();
}
}
客户端代码
package socket;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class SocketTCP01Client {
public static void main(String[] args) throws IOException {
//1.连接服务器(ip,端口)
//连接本机当9999端口,成功则返回socket对象
Socket socket = new Socket(InetAddress.getLocalHost(), 9999);
System.out.println("客户端 socket返回: " + socket.getClass());
//2.连接后,生产Socket对象,通过socket.getOutputStream()
// 得到和socket对象关联的输出流对象
OutputStream outputStream = socket.getOutputStream();
//3.通过输出流,写入数据到数据通道
outputStream.write("hello, server".getBytes());
//4.关闭流和socket对象
outputStream.close();
socket.close();
}
}
299

被折叠的 条评论
为什么被折叠?



