Day18 TCP

TCP

服务器:(ServerSocket)
    步骤:1.创建服务器
        ServerSocket   server=new  ServerSocket(8989);
        2.等待链接(链接成功)获得套接字
        Socket   socket=server.accept();
        3.IO通信,接受消息
        BufferedReader bufferedInputStream=new  BufferedReader(new InputStreamReader(socket.getInputStream(),"utf-8"));
        4.关闭链接
        socket.close();
        server.close();
客户端:(Socket)
    步骤:1.创建套接字,并请求服务器
        Socket   client=new Socket("127.0.0.1", 8989);// host服务器地址,port 端口
        2.IO通信,发送消息
        BufferedWriter  bufferedWriter=new  BufferedWriter(new  OutputStreamWriter(client.getOutputStream(),"utf-8"));

        3.关闭链接
        client.close();
OSI七层模型
    应用层:应用程序之间的数据交换
表示层:协商数据交换的格式
会话层:客户端的应用程序提供了,打开和关闭以及会话管理的机制
传输层:提供计算机之间进行通信会话,并确保数据的可靠传输
网络层:提供所谓所谓地址链接服务,这些链接协议可处理地址信息和路由器信息,如果发错错误要求重新传送.
数据链路层:网卡地址,同一份配.
物理层:物理介子,二进制流传输
三次握手:(AB主机)
    第一次握手:A主机要求建立链接
     第二次握手:B主机收请求,然后确认联机信息
     第三次握手:A主机收到数据包,检查是否正确,如果正确建立链接
UDP通信
 不面向连接,不可靠的协议 快速发送
发送端:
(1)    创建发送地址
InetAddress   inetAddress=InetAddress.getByName("localhost");
(2)    创建数据包
byte  []   datas="欢迎来到英雄联盟".getBytes();
//数据包                                    数据    发送地址    对方的端口号
DatagramPacket   packet=new DatagramPacket(datas, 0, datas.length, inetAddress, 8848);
(3)    创建套接字设置自己端口号
int  port=8989;
DatagramSocket   datagramSocket=new DatagramSocket(port);
(4)    利用套接字发送数据包
datagramSocket.send(packet);
(5)    释放资源
datagramSocket.close();
接收端:
(1)    创建数据包
DatagramPacket  datagramPacket=new  DatagramPacket(datas, datas.length);
(2)    创建套接字设置自己的端口号
DatagramSocket    datagramSocket=new  DatagramSocket(8848);
(3)    用套接字获得数据包
datagramSocket.receive(datagramPacket);
//数据打印
System.out.println(new  String(datas).trim());
(4)    释放资源
datagramSocket.close();
Arrays(包含用于操作数组的各种方法)
List<T>    asList(T... a)        返回由指定数组支持的固定大小的列表
byte[]    copyOf(byte[] original, int newLength)    复制指定的数组,用零截取或填充,以便复制具有指定的长度
byte[]    copyOfRange(byte[] original, int from, int to)    将指定数组的指定范围复制到新数组中
void        fill(int[] a, int fromIndex, int toIndex, int val)        将指定的int值分配给指定的int数组的指定范围的每个元素
void        parallelSort(byte[] a)    按照数字顺序排列指定的数组
void        sort(byte[] a, int fromIndex, int toIndex)    按升序排列数组的指定范围
String    toString()            返回指定数组的内容的字符串表示形式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值