c++ socket 绑定失败

zhuxue1234 2011-06-09 05:01:10
// sever1.cpp : 定义控制台应用程序的入口点。
//
这是我写的 服务器程序 为什么绑定的时候 返回值为-1

#include "stdafx.h"
#include <WinSock2.h>
#pragma comment ( lib , "wsock32.lib") ;
int _tmain(int argc, _TCHAR* argv[])
{
struct sockaddr_in local ;
SOCKET s ;
int s1 ;
int rc ;
char buf[1] ={ 0 } ;
local.sin_family = AF_INET ;
local.sin_port = htons( 7500 ) ;
local.sin_addr.s_addr = htonl ( INADDR_ANY ) ;
//local.sin_addr.s_addr = inet_addr("127.0.0.1");
s = socket( AF_INET , SOCK_STREAM , 0 ) ;
rc = bind ( s , (struct sockaddr*)&local , sizeof ( local ) ) ;
if ( rc < 0 )
{
printf( " bind Call failed ") ;
}
rc = listen( s , 5 ) ;
s1 = accept( s , NULL , NULL ) ;

rc = recv ( s , buf , 1 , 0 ) ;
printf( "%c\n" ,buf[ 0 ] ) ;
rc = send ( s , "2" , 1 , 0 ) ;

return 0;
}

...全文
186 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuxue1234 2011-06-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qq752923276 的回复:]
引用 2 楼 zhuxue1234 的回复:

那为什么我写的那程序 不能绑定成功呢 我想不通

LZ 注意看1L的代码
C/C++ code
WSADATA wsaData;
WORD sockVersion = MAKEWORD(2, 2);
//加载winsock库
if(WSAStartup(sockVersion, &wsaDat……
[/Quote]

WSACleanup();//清除加载
改加到哪里 服务器关闭的时候么?
zhuxue1234 2011-06-09
  • 打赏
  • 举报
回复
#pragma comment ( lib , "wsock32.lib")
这个是做什么的 ? 如果没有 就会有很多的 错误 无法解析的命令
__lhy 2011-06-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhuxue1234 的回复:]

那为什么我写的那程序 不能绑定成功呢 我想不通
[/Quote]
LZ 注意看1L的代码
WSADATA wsaData;
WORD sockVersion = MAKEWORD(2, 2);
//加载winsock库
if(WSAStartup(sockVersion, &wsaData) != 0)
return 0;

使用完以后还有这句
WSACleanup();//清除加载
c_losed 2011-06-09
  • 打赏
  • 举报
回复
都木有加载winsock库
怎么会成功。。。
zhuxue1234 2011-06-09
  • 打赏
  • 举报
回复
那为什么我写的那程序 不能绑定成功呢 我想不通
c_losed 2011-06-09
  • 打赏
  • 举报
回复

WSADATA wsaData;
WORD sockVersion = MAKEWORD(2, 2);
//加载winsock库
if(WSAStartup(sockVersion, &wsaData) != 0)
return 0;
// 创建套节字
SOCKET sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(sListen == INVALID_SOCKET)
{
printf("socket error\n");
return 0;
}
// 在sockaddr_in结构中装入地址信息
sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(4500); // htons函数 将主机的无符号短整形数转换成网络
//字节顺序
sin.sin_addr.S_un.S_addr = INADDR_ANY;
// 使套接字和本地地址绑定
if(bind(sListen, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR)
{
printf(" bind error \n");
closesocket(sListen);
return 0;
}
// 设置套接字进入监听模式
if(listen(sListen, 5) == SOCKET_ERROR)
{
printf("listen error\n");
closesocket(sListen);
return 0;
}

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧