PC与PC之间的交流(B/S)
首先是Client端:
* TCP通信的客户端:向服务器发送连接请求给服务器发送数据,读取服务器回写的数据表示客户端的类 * java.net.Socket:此类实现客户端套接字(也可以就叫"套接字")。套接字是两台机器间通信的端点。 * 套接字:包含了IP地址和端口号的网络单位 * * 构造方法 * Socket:string host,int port)创建一个流套接字并将其连接到指定主机上的指定端囗号 * 参数: * String host.:服务器主机名称/IP地址 * int port :服务器端口号 * * 成员方法 * Outputstream getoutputstream()返回此套接字的输出流。 * Inputstream getInputstream()返回此套接字的输入流 * void close()关闭此套接字。 * * 实现步骤: * 1.创建一个客户端对象Socket,构造方法绑定服务器的IP地址和端口号 * 2.使用Socket对象中的方法getOutputStream()获取网络字节输出流对象 * 3.使用网络字节输出流getOutputStream()对象中的方法write,给服务器发送数据 * 4.使用Socket对象中的方法getInputStream()获取网络字节输入流对象 * 5.使用网络字节输入流对对象中的方法read,读取服务器回写的数据 * 6.释放资源(Socket)
客户端的代码实现:
public class TCPClient {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1",8888);
OutputStream os = socket.getOutputStream();
os.write("你好服务器".getBytes());
InputStream is = socket.getInputStream();
byte[] bytes = new byte[1024];
int len = is.read(bytes);
System.out.println(new String(bytes,0,len));
socket.close();
}
}
然后是Server端:
* TCP通信的服务器端:接收客户端的请求,读取客户端发送的数据給客户端回写数据表示服务器的类:java.net.ServerSocket:此类实现服务器套接字。 * 构造方法 * Serversocket(int port)创建绑定到特定端口的服务器套接字 * 服务器端必须明确一件事情,必须的知道是哪个客户端请求 * 的服务器 * 所以可以使用 accept方法获取到请求的客户端对象 * Socket成员方法 * Socket accept()侦听并接受到此套接字的连接 * * 实现步骤: * 1.创建ServerSocket对象和系统要指定的端口号 * 2.使用ServerSocket对象中的accept方法,获取到请求客户端对象socket * 3.使用socket对象中的方法getOutputStream()获取网络字节输入流对象 * 4.使用网络字节输入流getInputStream对象中的方法read,读取客户端发送的数据 * 5.使用socket对象中的方法getInputStream()获取网络字节输出流对象 * 6.使用网络字节输出流getOutputStream对象中的方法write,给客户端回写消息 * 7.释放资源(Socket,SocketServer)
服务器端的代码实现:
public class TCPServer {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(8888);
Socket socket = server.accept();
InputStream is = socket.getInputStream();
byte[] bytes = new byte[1024];
int len = is.read(bytes);
System.out.println("服务器收到的消息:"+new String(bytes,0,len));
OutputStream os = socket.getOutputStream();
os.write("服务器回复的消息:收到谢谢".getBytes());
socket.close();
server.close();
}
}
运行结果:
Client:服务器回复的消息:收到谢谢
Server:服务器收到的消息:你好服务器
服务端的端口号必须自己向系统指定特定端口号,以便客户端能正确访问到