问题: 我想的建立TCP套接字read(),并write()从相同的主要功能,但我不能确定如何正确地从插座中读出。
背景信息:我与单独的可执行文件进行通信,一个用于Reading(服务器),另一个用于Writing(客户端)。
为此,我使用了该站点作为指导。https://www.geeksforgeeks.org/tcp-server-client-implementation-in-c/
据我所知,从雷米勒博对评论交流电插座读写,通过返回的插座accept()所使用的服务器,并从返回的插座socket()所使用的客户端。
我写的套接字工作正常。
Awaiting message from a client...
Address: 2, Port: 4547
Socket: 4
Serv addr: -1894572528
Size of server: 16
Message to send to server: hey
sendBytes: 3: hey
Recv bytes: 0
Recieved message:
当您以其他方式知道长度时,不要使用字符串函数。它将给您带来麻烦。
bzero(recvBuffer,256);
bufferSize = strlen(recvBuffer);
recvN = read(acceptSock,recvBuffer,bufferSize);
您清空缓冲区,使其仅包含零。由于零字节标记了字符串的结尾,因此strlen将返回零。因此,您尝试使用声称为零字节大小的缓冲区进行读取。
该strlen功能永远不会告诉您有多少可用空间。它告诉您字符串数据有多大。如果那里没有字符串数据,则调用没有任何意义strlen。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。