一. TCP
- TCP是一种可靠的网络协议,在通信的两端各建立起一个Socket对象,从而形成网络虚拟链路,两边的端口可以通过虚拟链路通信
- Java对基于TCP的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket对象产生IO流来进行网络通信
- TCP发送数据的步骤
- 创建客户端的Socket对象(Socket)
- 获取输出流
- 写数据
- TCP通信练习客户端代码
public class ClientDemo {
public static void main(String[] args) throws IOException {
Socket socket=new Socket("127.0.0.1",8888);
OutputStream outputStream = socket.getOutputStream();
InputStream inputStream = socket.getInputStream();
outputStream.write("hello.我来啦".getBytes());
byte[] bys=new byte[1024];
int read = inputStream.read(bys);
String data=new String(bys,0,read);
System.out.println(data);
socket.close();
}
}
- TCP通信练习服务器端代码
public class ServerDemo {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket=new ServerSocket(8888);
Socket accept = serverSocket.accept();
InputStream inputStream = accept.getInputStream();
byte[] bys=new byte[1024];
int len=inputStream.read(bys);
String data=new String(bys,0,len);
System.out.println(data);
accept.getOutputStream().write("客户端,我接受到你的反馈啦".getBytes());
serverSocket.close();
}
}
- TCP通信练习,客户端的数据来自键盘录入,直到输入的数据是886,发送数据结束
public class ClientSocketDemo1 {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1", 8889);
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
String line;
while ((line = reader.readLine()) != null) {
if ("886".equals(line)) {
break;
}
writer.write(line);
writer.newLine();
writer.flush();
}
socket.close();
}
}
public class ServerSocketDemo1 {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8889);
Socket socket = serverSocket.accept();
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line;
while ((line = reader.readLine())!=null) {
System.out.println(line);
}
serverSocket.close();
}
}