开发者社区> 问答> 正文

从main中定义的套接字读取C TCP write()和read()

问题: 我想的建立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:

展开
收起
祖安文状元 2020-01-07 13:55:41 417 0
1 条回答
写回答
取消 提交回答
  • 当您以其他方式知道长度时,不要使用字符串函数。它将给您带来麻烦。

    bzero(recvBuffer,256);
    bufferSize = strlen(recvBuffer);
    recvN = read(acceptSock,recvBuffer,bufferSize);
    
    

    您清空缓冲区,使其仅包含零。由于零字节标记了字符串的结尾,因此strlen将返回零。因此,您尝试使用声称为零字节大小的缓冲区进行读取。

    该strlen功能永远不会告诉您有多少可用空间。它告诉您字符串数据有多大。如果那里没有字符串数据,则调用没有任何意义strlen。

    2020-01-07 13:55:51
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
TCP Cluster for mqtt技术实施方案 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载