socket绑定不成功?为什么?

litangel 2003-05-21 10:13:03
总是返回1,为什么呢?
程序能编译通过。


UINT CMyDlg::StoreWork()
{
int nPort;
nPort=9306;

SOCKET ListenSock;
ListenSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);

struct sockaddr_in localaddr;
memset((void*)&localaddr,0,sizeof(localaddr));
localaddr.sin_family=AF_INET;
localaddr.sin_port=htons(nPort);


if(bind(ListenSock,(sockaddr*)&localaddr,sizeof(localaddr))==SOCKET_ERROR)
return 1;;
listen(ListenSock,5);
return 0;
}
...全文
528 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
litangel 2003-05-21
  • 打赏
  • 举报
回复
接分,呵呵。。

原来是问题出在初始化这一块,,,,

已经成功,开了9306端口
jemmylau 2003-05-21
  • 打赏
  • 举报
回复
我现在是做vc的,负责当前项目中的网络传输及服务端,以前玩过delphi,下个项目有可以用到delphi,呵呵!

学习
jemmylau 2003-05-21
  • 打赏
  • 举报
回复
int nPort;
nPort=9306;

WSADATA wsaData;
WORD version = MAKEWORD(2,0);
int ret = WSAStartup(version,&wsaData);
if(ret != 0)
TRACE("Initilize Error!\n");
SOCKET ListenSock;
ListenSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);

struct sockaddr_in localaddr;
memset((void*)&localaddr,0,sizeof(localaddr));
localaddr.sin_family=AF_INET;
localaddr.sin_port=htons(nPort);

if(bind(ListenSock,(sockaddr*)&localaddr,sizeof(localaddr))==SOCKET_ERROR)
{
int i =GetLastError();
return 1;;
}
listen(ListenSock,5);
return 0;


这样就OK了,你本来的初始化有问题。
litangel 2003-05-21
  • 打赏
  • 举报
回复
VC++的类与Delphi中的完全不一样,

所以搞得我头直晕。。

但是工作需要没有办法,必须要看懂VC++的源码,

而且是网络传输方面的,
实际上是Dicom Server,PACS方面的东西, 就是数字影像传输与归档

唉。。。。
jemmylau 2003-05-21
  • 打赏
  • 举报
回复
好的,收到,研究中...呵呵
litangel 2003-05-21
  • 打赏
  • 举报
回复
传输正在进行中,呵呵。。。。

已经完事了。。

帮我看看吧。。

Thanks a lot.
jemmylau 2003-05-21
  • 打赏
  • 举报
回复
没收到
litangel 2003-05-21
  • 打赏
  • 举报
回复
谢谢了。。。

我发了。
jemmylau 2003-05-21
  • 打赏
  • 举报
回复
把你的整个代码发给我,我看看
landry@163.com
litangel 2003-05-21
  • 打赏
  • 举报
回复
端口肯定没有开呀。。

我用netstat -a 看了,没有9306这个端口。。

我的信箱是Litangel@zkpacs.com.cn

如果哪们好心的兄弟帮我调试通过了,能发给我一份吗?
litangel 2003-05-21
  • 打赏
  • 举报
回复
jemmylau(枕头) :
初始化:是像我下面这样吗?我初学VC,编译不能通过呀。。
UINT CMyDlg::StoreWork()
{
int nPort;
nPort=9306;

WSADATA wsaData(2,0);
WORD version = MAKEWORD(2,0);
int ret = WSAStartup(version,&wsaData);
if(ret != 0)
TRACE("Initilize Error!\n");
SOCKET ListenSock;
ListenSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);

struct sockaddr_in localaddr;
memset((void*)&localaddr,0,sizeof(localaddr));
localaddr.sin_family=AF_INET;
localaddr.sin_port=htons(nPort);

if(bind(ListenSock,(sockaddr*)&localaddr,sizeof(localaddr))==SOCKET_ERROR)
//return 1;;
GetLastError();
listen(ListenSock,5);
return 0;
}
litangel 2003-05-21
  • 打赏
  • 举报
回复
这样还是不行呀,没有任何显示错误代码呀。。。。

UINT CMyDlg::StoreWork()
{
int nPort;
nPort=9306;

SOCKET ListenSock;
ListenSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);

struct sockaddr_in localaddr;
memset((void*)&localaddr,0,sizeof(localaddr));
localaddr.sin_family=AF_INET;
localaddr.sin_port=htons(nPort);

if(bind(ListenSock,(sockaddr*)&localaddr,sizeof(localaddr))==SOCKET_ERROR)
//return 1;;
GetLastError();
listen(ListenSock,5);
return 0;
}
jemmylau 2003-05-21
  • 打赏
  • 举报
回复
用GetLastError()看看是什么错误码?

我没做任何改动在我机子上是正确的。

是不是没有对Socket进行初始化?
shesh 2003-05-21
  • 打赏
  • 举报
回复
没什么问题啊,是不是那端口已经被打开了.
robert810217 2003-05-21
  • 打赏
  • 举报
回复
在获得error后不要急着返回,GetLastError()看看到底是什么毛病。

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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