TCP通信时Socket两端的模式能不能不一样?

比如在CS模型中,能不能C端为阻塞模式,用Stream读写,而S端为非阻塞模式,用Buffer读写?

阅读 3.1k
1 个回答

socket就是一个文件描述符,你可以用阻塞型api去读写,也可以把它转为非阻塞型进行读写,它不关TCP事,也不关是否是客户端还是服务器的事,如:
对一个可读写的socket, 通常用read, write函数默认就是阻塞的,可以用ioctl或fcntl把socket变成NON_BLOCK,这时read/write就是马上返回的,当然也可以在不变成NON_BLOCK的情况下,用select函数实现非阻塞+超时读。
把读出来的data存放在一个char []里面,就是buffer了,buffer依情况而定,満了就回调送给上层,这是网络编程知识,不是socket本身的限制,建议你系统的了解和学习一下网络编程。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题