本篇文章给大家谈谈c语言socketsend,以及C语言socket远程控制对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、C语言Socket服务器怎么给客户端发消息2、C语言 socket编程 客户端只send一次 但是服务器会循环执行这条命令 在线等3、unix C语言关于socket的recv和send的问题,代码中也有问题4、C语言中SOCKET关于send和recv的问题,不懂别乱贴
C语言Socket服务器怎么给客户端发消息
你的文件中的问题
// 会阻塞进程,直到有客户端连接上来为止
// 既然是直到有客户端连接上,那么就要弄明白哪个是与客户端连接的套接字
// sockClient就是与客户端连接的套接字
sockClient = accept(sockServer, (SOCKADDR*)addrClient, len);
//接收并打印客户端数据
recv(sockClient, recvBuf, 100, 0);
printf(“%s\n”, recvBuf);
// 所以此处,应该把sockServer改为sockClient
send(/*sockServer*/sockClient, sendBuf, 100, 0);
PS:服务器客户端通信,是要保持服务器与客户端的连接。
而不能这样立即关闭,如果设置不对,立即关闭,缓冲区的数据是会丢失的。那客户端也就不会再收到数据了。
你可以加Sleep(10000);来测是通信过程
//关闭socket
closesocket(sockClient);
C语言 socket编程 客户端只send一次 但是服务器会循环执行这条命令 在线等
recv(comm_socket,recv_buff, sizeof(recv_buff), 0); /*receiveclient’s command*/
改成
int ret = recv(comm_socket,recv_buff, sizeof(recv_buff), 0); /*receiveclient’s command*/
if ret == -1 || ret == 0
break
== -1 表示出错, =0 表示 socket 已经关闭。
unix C语言关于socket的recv和send的问题,代码中也有问题
你的代码其实没有任何问题,之所以 server 没有打印,是由于server最后打印时的代码是
printf(“%s”,buff);
把它改成
printf(“%s\n”,buff);
即可。 标准输出是行缓冲的,所以如果打印的内容没有 \n 了话,内容不会真正打印出来,而是留在缓冲中。
至于你client打印时
printf(“recv from server :%s”, buff);
虽然没有在后面加 \n, 但是你从server发到client的消息里已经带有 \n 了,所以这里没出问题。
关于标准输入输出缓冲相关的更多细节,自己搜一下吧。
htons和inet_aton有什么区别?
htons 是把 主机使用的字节序转成网络字节序 (即入参是整数,返回值也是整数)
而 inet_aton 是吧 ascii 字符串形式的IP地址 转换成 网络字节序的整数。
自己去搜一下网络字节序相关信息。
C语言中SOCKET关于send和recv的问题,不懂别乱贴
说实在的这个问题非常简单,不过你习惯太差,你把send和recv的返回值看看不就明白了!
前提是你描述的都是事实。
否则还可能有Socket问题。
如果是linux,strace一下就知道什么问题了。
Windows的也很简单。
前面的明显不正确,send如果是TCP,(UDP 不应该用send),send返回时,消息已经发出了。
c语言socketsend的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于C语言socket远程控制、c语言socketsend的信息别忘了在本站进行查找喔。