SOCKET网络 在先线等待 100分 不够再给

sh_liyu98 2005-02-04 03:09:32
利用SOCKET API 写了一个网络程序
在192.168.1.XXX 的网段运行正常 但是把网络配置到10.0.1.XXX子网掩码是255.255.248.0 DNS服务器IP地址是10.0.0.2 SOCKET 不能正确的连接 在SOCKET的连接的时候有什么相关的设置吗?
...全文
171 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodluckyxl 2005-02-05
  • 打赏
  • 举报
回复
端口占用了
somedummy 2005-02-04
  • 打赏
  • 举报
回复
给点详细的信息行不?譬如哪个函数调用失败了,WSAGetLastError显示什么?
sh_liyu98 2005-02-04
  • 打赏
  • 举报
回复
看看是不是还需要增加其他的设置
sh_liyu98 2005-02-04
  • 打赏
  • 举报
回复
int CClientSocket::ConnectServer(const char* cIP,int nPort)
{

//创建新套接字
m_netSocket.socket=socket(AF_INET,SOCK_STREAM,0);


//准备服务器的信息,这里指定的是服务器的地址
m_netSocket.sockAddress.sin_family = AF_INET;

m_netSocket.sockAddress.sin_addr.S_un.S_addr = inet_addr(cIP);
m_netSocket.sockAddress.sin_port = htons(nPort);

int nRet=-2;
nRet=connect(m_netSocket.socket,(struct sockaddr FAR*)&m_netSocket.sockAddress,sizeof(m_netSocket.sockAddress));
if(nRet == SOCKET_ERROR)
{
OutPutLastError();

OutputDebugString("connect failed!\n");
return nRet ;
}

return nRet;
}



int CServerSocket::InitServer(int nPort,int nCount)
{
int nRet=Blind(nPort);
if(nRet!=SOCKET_ERROR)
{
nRet=Listen(nCount);
}
return nRet;
}
int CServerSocket::Blind(int nPort)
{
////创建新的流套接字
m_netSocket.socket = socket(AF_INET,SOCK_STREAM,0);

m_netSocket.sockAddress.sin_family = AF_INET;
m_netSocket.sockAddress.sin_addr.S_un.S_addr = INADDR_ANY;
m_nPort=nPort;
m_netSocket.sockAddress.sin_port = htons(m_nPort);

//绑定一个套接字到本机地址(服务器端)

int nRet=bind(m_netSocket.socket,(struct sockaddr FAR*)&m_netSocket.sockAddress,sizeof(m_netSocket.sockAddress));
if (nRet == SOCKET_ERROR )
{
OutPutLastError();

OutputDebugString("bind failed!!");
closesocket(m_netSocket.socket);
m_bFlagScoket=FALSE;

return nRet;
}
OutputDebugString(STR_BLIND_MSG);

m_bFlagScoket=TRUE;
return nRet;

}

/////////////////////////////////////////////////////////////////////////////////////////
//
// Function name : CServerSocket::Listen
//
// Description :
//
// Return type :
//
// Effect type :
//
// Parameter : int nCount
//
/////////////////////////////////////////////////////////////////////////////////////////

int CServerSocket::Listen(int nCount)
{
if(m_bFlagScoket==FALSE)
return -1;

int nRet = 1;
// ret = listen(m_netSocket.socket,5);
nRet = listen(m_netSocket.socket,nCount);
if(nRet == SOCKET_ERROR)
{
OutPutLastError();

OutputDebugString("listen error!\n");
m_bFlagScoket=FALSE;
return nRet;
}

m_bFlagScoket = TRUE;
return nRet;
}

这是连接的代码

sh_liyu98 2005-02-04
  • 打赏
  • 举报
回复
网关是默认的没有动

但是还是不行
somedummy 2005-02-04
  • 打赏
  • 举报
回复
这个似乎没有问题吧?你监听的是不是现在的IP上的端口?如果你设置的监听的地址不是INETADDR_ANY的话,那么要正确设置你的IP才行。

另外你有没有设置正确的路由?如果几台机器虽然IP在一个子网,但实际上并没有路径可以到达的话,还是不行的,要设置缺省网关才行
iceworld819 2005-02-04
  • 打赏
  • 举报
回复
不在一个网段啊
sh_liyu98 2005-02-04
  • 打赏
  • 举报
回复
好 我看看 了
oo 2005-02-04
  • 打赏
  • 举报
回复
如果你确信 telnet 端口号 能成功连接,
但用你的程序不能连接,那把连接部分的代码贴出来
yjh1982 2005-02-04
  • 打赏
  • 举报
回复
要在一个子网才能连接吧.
检查一下这个么.
sh_liyu98 2005-02-04
  • 打赏
  • 举报
回复
网络是好的
后面没有带防火墙 现在测试的环境是
电脑直接和HUB连接
oo 2005-02-04
  • 打赏
  • 举报
回复
socket跟这些没啥关系。

可能是后面一个网络的防火墙关闭了端口。

你可以用 telnet 端口号
来测试一下网络是不是好的。

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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