TCP(传输控制机制)
(先运行服务端,让他等客户,不能客户等他)
服务端->客户端->服务端
UDP(用户数据报机制)
Java网络程序设计:
Java.net包
TCP:需要连接,使用字节流(InputStream|OutputStram)的方式传送,可靠,麻烦
三次握手,四次挥手
UDP:不需要连接,以数据报(datagram)的形式传送,不可靠,好用爱用
//TCP
public class Client{
public static void main(String[] args){
//创建一个套接字socket,让sever和client建立联系
String ip = "127.0.0.1";//你要传给哪台设备
int port = 1900;
Socket sc = new Socket(ip, port);
//建立一个字节流也就是通道,把东西传到通道
OutputStream os = sc.getOutputStream();//这是Socket类的一个方法
//在通道里面传入数据,客户端传,要是字节类型的数组
is.write("aaaa传中文也可以不过待会要把字节流转换为字符流".getBytes());
//关闭通道,释放资源
is.close();
sc.close();
}
}
public class sever{
public static void main(String[] args){
//创建一个接收的Socket,就是我这台设备
SeverSocket ss = new SeverSocket(1900);
//服务端要在这里等客户了,创建链接了,不然就一直等
Socket sc = ss.accept();
//创建输入流
InputStream is = sc.getInputStream();
//转换为字符流
InputSreamReader isr = new InputSreamReader(is);
//
int b ;
while((b=isr.read)!=-1){
Sout((char)b);
}
}
}
//UDP------------------------------------------------------------------------------------
public class client{
public static void main(String[] args){
//创建数据报套接字
DatagramSocket ds = new DatagramSocket();
//创建一个bytes数组接受数据
byte[] bytes = new byte[1024];
int port = 1900;
//调用InetAddress类的静态方法
InetAddress ip = InetAddress.getByName("127.0.0.1");
//创建一个数据报的包裹
DatagramPacket dp = new DatagramPacket(bytes, bytes.length, ip,port);
//发送数据
ds.send(dp);
//释放资源
ds.close();
}
}
public class Sever{
public static void main(String[] args){
//创建数据报套接字,必须要有端口号
DatagramSocket ds = new DatagramSocket(1900);
//创建一个bytes数组接受数据
byte[] bytes = new byte[1024];
//调用InetAddress类的静态方法
InetAddress ip = InetAddress.getByName("127.0.0.1");
//创建一个数据报的包裹
DatagramPacket dp = new DatagramPacket(bytes, bytes.length, ip,port);
//发送数据
ds.receive(dp);
byte[] data = dp.getDate();//返回的也是byte[];
sout(data);
//释放资源
ds.close();
}
}