JAVA socket

ip 协议

Tcp /udp 协议

socket 插座 

server 端口,clietn端口是随意取的,每次取的都不一样

readUTF  阻塞式方法,System.in. readline() 

UDP  没有client 和 server之分,都是一个类叫DatagramSocket 数据包插座, 有send, receive方法,send时候你初始话 DatagramPackage(数据包)的时候,必须在包里面 写出来,这个包的目的地ip和端口号, 因为UDP ,他之前没有 一根线,连着,他是直接丢出去这个包,对方收没收到,不确定,而TCP 是必须两个建立一根线,我们已经取得联系了,然后通过这根线发送消息,那么消息体就不用再包含ip和端口的信息,java中TCP 的socket/scokertServer是通过inputstream 和outputStream 管道来传送消息的,而UDP 是没有管道,直接通过数据包,来传送,数据包,是完整的,这个包发送到网络上,路由器拿到这个包就打开包看看这个包的目的地ip然后决定给他送到下一个站点.

Tcp server:  new 一个 ServerSocket  监听在一个端口号上, 死循环持续accept, 拿到inputstream,outputStream 开始通话

Tcp client: new 一个 socket  链接到哪个ip+port号上,就链接上了, 拿到inputstream.ouputstream 开始通话

Udp server: new 一个 数据插座,监听在一个端口上, 死循环持续 receive(), new一个字节数组,new一个数据包,用来接收数据,接收到的数据

UDP client:new 一个数据包,把要发送的数据转换成字节数组,装到数据包中去, new一个 数据插座,发送出去。

UDP的包里面的内容,无论是发送还是接收,都是字节数组,所以装包时要把其他格式的,撞到字节数组中,打开包时从字节数组抓换回来,其中用到ByteArrayinputstream 和byteArrayOutputStream, 他们有方法 toByteArray,将管道转化成字节数组,string 有个方法 getbyte() 返回时是一个字节数组, 其他数据类型和byteArray的转化,可以通过 ByteArrayinputstream/outputstream 外面套一个Datainputstream 和dateoutstream 来向字节数组中读和写

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值