concepto
El protocolo tcp transmite datos de manera relativamente estable. Antes de comenzar a transmitir datos, el cliente hará que el servidor realice un protocolo de enlace de tres vías. El cliente envía un paquete de datos al servidor, el servidor responde al cliente y el cliente responde al servidor Esto asegura que el servidor pueda recibir datos antes de comenzar a transmitir datos. El protocolo udp es que el remitente transmite datos directamente al receptor, no hay un servidor y el remitente simplemente envía, independientemente de si el receptor puede recibirlos.
instancia de tcp
cliente
package com.test.tcpTest;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class TcpClient {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//tcp客户端
//1.创建客户端 指定服务器端的ip和端口号
try {
Socket socket=new Socket("192.168.8.4", 8899);
//返回客户端的字节输出流对象
OutputStream os= socket.getOutputStream();
//2.发送数据到服务器端
os.write("tcp你好".getBytes());
//也可以接收服务端的反馈信息
InputStream is= socket.getInputStream();
byte[] data=new byte[1024];
is.read(data);
System.out.println("得到服务器反馈回来的消息:"+new String(data));
//3.关闭客户端
socket.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Servidor
package com.test.tcpTest;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpServer {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//服务器端
try {
//1.创建服务器端socket
ServerSocket serverSocket=new ServerSocket(8899);
//2.接收客户端
Socket socket= serverSocket.accept();
//3.拿到客户端的消息
InputStream is= socket.getInputStream();
byte[] data=new byte[1024];
is.read(data);
System.out.println("来自客户端的消息:"+new String(data));
//4.给客户端发送反馈信息
OutputStream os= socket.getOutputStream();
os.write("你好,收到你的消息了".getBytes());
//4.关闭客户端
socket.close();
//5.关闭服务器端
//serverSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}