java socket总决

本文详细介绍了Socket的基本概念及其在TCP/IP通信中的应用。包括Socket的两种类型:流套接字和数据报套接字,以及如何通过Socket实现阻塞与非阻塞操作。此外还讨论了Socket连接中的常见问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、socket是一套api,提供了tcp/udp通信的功能,HttpURLConnect底层也是通过socket实现,只是传的内容是http报文
2、socket有两种(1)流套接字Socket,SocketServer;(2)数据报套接字DatapramSocket
3、socket连接、读和写都是阻塞的,可以利用nio实现非阻塞操作
4、Socket(InetAddress address, int port)初始化socket的阻塞时间由系统决定,
  可以使用Socket()生成一个空socket和再利用connect(SocketAddress endpoint,int timeout)设置阻塞时间
5、accetp()和read()方法可以使用setSoTimeout()设置阻塞超时时间;write()不能设置阻塞超时时间
6、socket如果没有指定本地端口,系统会随机分配端口,由于tcp存在Time-wait特性,如果time-wait时间过长会出差端口耗尽问题
7、当缓冲区分配不合理时可能出现死锁问题,可以将读和写使用不同的线程
8、流套接字没有边界特性,需要在程序中定义自己的传输协议
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值