c++的socket

来源:百度知道 编辑:UC知道 时间:2024/07/06 22:10:38
//这里是绑定一个端口
struct sockaddr_in addr;//这是网络地址数据结构,本机地址
addr.sin_family = AF_INET;
addr.sin_port =htons(25);
addr.sin_addr.S_un.S_addr = inet_addr("115.192.185.94");
if(bind(s,(sockaddr*)&addr,sizeof(addr)) != 0)
{
cout<<"绑定SOCKET到端口失败."<<endl;
closesocket(s);
return 0;
}
怎么绑定失败了,代码是编译通过,而且link成功生成exe文件,但是
绑定失败了
看来夜猫子很多阿

addr.sin_addr.s_addr = inet_addr("115.192.185.94");

调用bind函数如果失败了,可以通过WSAGetLastError获得具体错误的原因。可能的原因请查看msdn的bind函数

addr.sin_port =htons(25);端口号必须要有固定的区域的。

cli.sin_addr.s_addr=inet_addr(str);
cli.sin_family=AF_INET;
cli.sin_port=5000;//htons(5000);
//创建socket
clisock=socket(AF_INET,SOCK_STREAM,0);
//连接到服务器
while(connect(clisock,(sockaddr*)&(cli),sizeof(cli)))
{
//空循环
for (int i=0;i<=65000;i++)
for(int j=0;j<=200;j++);
if (addcount==25)
addcount=0;
cli.sin_addr.s_addr=inet_addr(array[addcount++]);
}
//发送姓名到服务器上去
CString str_username;
str_username="username,"+fivechess.username_player;
send(clisock,str_username,100,0);
//循环获得数据
while(s!=SOCKET_ERROR)
{
//调用recv函数接收数据
s=recv(clisock,buff,100,0);
fivechess.date_recv(buff);
fivechess.update();
}

我也编过,端口号重复也是