非阻塞socket怎么判断其已建立连接?(getsocketopt windows)
非阻塞socket怎么判断其已建立连接?
1.将打开的socket设为非阻塞的,可以用fcntl(socket, F_SETFL, O_NDELAY)完成(有的系统用FNEDLAY也可).
(图片来源网络,侵删)2.发connect调用,这时返回-1,但是errno被设为EINPROGRESS,意即connect仍旧行还没有完成.
3.将打开的socket设进被监视的可写(注意不是可读)文件集合用select进行监视,如果可写用getsockopt(socket, SOL_SOCKET, SO_ERROR, &error, sizeof(int)); 来得到error的值,如果为零,则connect成功.
如何设置合适缓冲区大小?
设置缓冲区大小时,需要综合考虑多个因素。第一,如果你在使用网络编程,特别是在使用socket发送数据时,你需要先将数据发送到socket缓冲区中,然后接收函数再从缓冲区中取数据。如果发送端的速度特别快,缓冲区可能很快就会被填满。在这种情况下,你应该根据情况设置缓冲区的大小,可以通过setsockopt函数来实现。
(图片来源网络,侵删)第二,在读取文件时,缓冲区的大小也会影响到程序的性能。例如,如果你的电脑有4GB的内存,那么在读取文件时,你可以将缓冲区大小设置为内存大小的1.5到2倍。但是,如果你感觉这样的设置超出了你的电脑承受的范围,你可以尝试减小缓冲区的大小。
总的来说,设置合适的缓冲区大小需要根据你的具体情况来决定,包括你的硬件配置、你的程序需求以及你想要达到的性能目标等因素。
到此,以上就是小编对于的问题就介绍到这了,希望这2点解答对大家有用。
(图片来源网络,侵删)
文章版权声明:除非注明,否则均为游侠云资讯原创文章,转载或复制请以超链接形式并注明出处。