首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于SOCKET编程服务器的有关问题

2013-08-01 
关于SOCKET编程服务器的问题下面是代码:#include WinSock2.h#include stdio.hint main(){WORD wVersio

关于SOCKET编程服务器的问题


关于SOCKET编程服务器的有关问题

下面是代码:

#include <WinSock2.h>
#include <stdio.h>
int main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested=MAKEWORD(1,1);
err=WSAStartup(wVersionRequested,&wsaData);
if(err!=0)
{
return 0;
}
if(LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1)
{
WSACleanup();
return 0;
}
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6001);
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
listen(sockSrv,5);
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
while(1)
{
//char sendBuff[100];
//sprintf(sendBuff,"Welcome %s to here",inet_ntoa(addrClient.sin_addr));
//send(sockConn,sendBuff,strlen(sendBuff)+1,0);
char recvBuf[10000];
recv(sockConn,recvBuf,10000,0);
printf("%s\n",recvBuf);

}
closesocket(sockConn);
return 0;
}
socket 服务器 编程 乱码
[解决办法]

char recvBuf[10000];
        int size = recv(sockConn,recvBuf,10000,0);
       if( size == 0)
           break;

     
        printf("%s\n",recvBuf);


至于乱码,最好在发送端和接收端都初始化buffer
[解决办法]
引用:

Quote: 引用:


char recvBuf[10000];
memset(recvBuf, 0, 1000);
recv(sockConn,recvBuf,10000,0);


那边还没有发送数据,我这边还想一直在往外刷数据,就跟楼上那个图一样,什么数据都不显示,但是右边的那个能下拉的自己一直往下走


你没有对recv的返回值判断,实际上recv已经返回错误代码了,所以一直循环在打印buff的内容。打印一堆看不见的'\0'字符。
[解决办法]
引用:
Quote: 引用:

为何你的accept不是在while(1)里面呢???

就一个连接,连上之后就一直接受数据.
即使改了之后还是不显示数据,但是右边那个下拉条一直在往下走


右边下拉条一直往下走说明有数据输出!
不显示数据?===》应该是不显示“可见字符”吧!如果没有输出,右侧下拉条怎么会往下走呢?

你的while(1)里一直有接收数据并printf,所以会一直有数据输出,导致滚动条往下走!
[解决办法]
这段代码有点眼熟,好像是孙鑫那边的吧。帮你调试了一下,应该是你电脑上的6001端口被占用了,换一个端口试试6002之类,酷我音乐会占用6001端口,看一下你是不是开了酷我音乐,查看端口以及占用信息你可以cmd 下使用 netstat -abn 命令

热点排行