socket编程问题 服务器是VC的,客户端是C#的。连接问题 求帮忙!!

淡水鱼大魔王 2012-02-29 02:39:43
服务端 部分代码:
……
sockaddr_in myaddr, cli_addr;
int cliaddrLen = 0;
HANDLE Hnd;
DWORD dwThreadID;

myaddr.sin_addr.S_un.S_addr = inet_addr("172.16.42.224");
myaddr.sin_family = AF_INET;
myaddr.sin_port = htons(82);

if((ServerSock = socket(AF_INET, SOCK_STREAM, IPPROTO_IP)) == INVALID_SOCKET)
{
AfxMessageBox("WSASocket");
return;
}

if(0 != bind(ServerSock, (SOCKADDR *)&myaddr, sizeof(SOCKADDR)))
{
closesocket(ServerSock);
AfxMessageBox("bind");
return;
}

if(listen(ServerSock,10) != 0)
{
AfxMessageBox("´íÎ󣡷¢ÉúÔÚlisten");
return ;
}


cliaddrLen = sizeof(SOCKADDR);
ClientSock = accept(ServerSock, (SOCKADDR *)&cli_addr, &cliaddrLen);
……
一直在这等待。

客户端 部分代码:
…… //socket连接服务端与客户端
public void Connect()
{
try
{
//建立连接socket
connectSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//获取IP地址,创建网络端点
IPAddress ipHostInfo = IPAddress.Parse("172.16.42.224");
//网络端点
IPEndPoint ipendpoint = new IPEndPoint(ipHostInfo, 82);
connectSocket.BeginConnect(ipendpoint,
new AsyncCallback(ConnectCallback),
connectSocket);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
}

private void ConnectCallback(IAsyncResult ar)
{
//从传递的状态中获取套接字,创建一个客户端套接字
Socket client = (Socket)ar.AsyncState;
//完成挂起的连接操作
client.EndConnect(ar);
//连接服务器成功
}
……
客户端能一直运行下去,就是服务端没接收。

求帮忙啊,先谢谢了。
...全文
115 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
淡水鱼大魔王 2012-03-01
  • 打赏
  • 举报
回复
我还想说一下的是 我的客户端是放在PDA上的,这和放在PC机上有没有区别啊??
oldm4n 2012-03-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yuanfj86912 的回复:]

引用 4 楼 oldm4n 的回复:
用你给的代码基本未作修改,只修改了IP地址及补充必要的WSAStartup等,C#代码未动,运行正常,连接正常

不知道你那边的网络拓扑啥样的,你把服务端跑起来,在客户端命令行里 telnet 172.16.42.224 82 能连上吗?我猜可能连不上


这个可以连上的,我再仔细看看。
[/Quote]

昏。。。果然是网络拓扑的问题。。。
淡水鱼大魔王 2012-03-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 oldm4n 的回复:]
用你给的代码基本未作修改,只修改了IP地址及补充必要的WSAStartup等,C#代码未动,运行正常,连接正常

不知道你那边的网络拓扑啥样的,你把服务端跑起来,在客户端命令行里 telnet 172.16.42.224 82 能连上吗?我猜可能连不上
[/Quote]

这个可以连上的,我再仔细看看。
淡水鱼大魔王 2012-03-01
  • 打赏
  • 举报
回复
我知道啦,原来是PAD上wifi连上的网络和PC机不在一个网段。

谢谢各位帮助!!
oldm4n 2012-03-01
  • 打赏
  • 举报
回复
应该不是你贴出来的这段代码的问题,AsyncCallback 在 .Net Compact Framework 里是被支持的,可能是你代码的其它部分的问题吧,去掉其它功能,单独把你帖子里的这个C#代码在CE上跑一下试试呢?
淡水鱼大魔王 2012-03-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 oldm4n 的回复:]
应该是有点儿区别的,你的代码在PC上应该能正常跑的吧?
具体细节区别要看MSDN了
[/Quote]

嗯,没办法了只能去看MSDN了。谢谢你啊。
oldm4n 2012-03-01
  • 打赏
  • 举报
回复
应该是有点儿区别的,你的代码在PC上应该能正常跑的吧?
具体细节区别要看MSDN了
oldm4n 2012-02-29
  • 打赏
  • 举报
回复
用你给的代码基本未作修改,只修改了IP地址及补充必要的WSAStartup等,C#代码未动,运行正常,连接正常

不知道你那边的网络拓扑啥样的,你把服务端跑起来,在客户端命令行里 telnet 172.16.42.224 82 能连上吗?我猜可能连不上
淡水鱼大魔王 2012-02-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ouyh12345 的回复:]
accept后是怎样处理的?
双方连接上了吗?
连接上的话,看看网卡是否收到了数据
[/Quote]

accept 没执行一直等待着, 双方没连上啊!
ouyh12345 2012-02-29
  • 打赏
  • 举报
回复
accept后是怎样处理的?
双方连接上了吗?
连接上的话,看看网卡是否收到了数据
淡水鱼大魔王 2012-02-29
  • 打赏
  • 举报
回复
来个高手 啊,急啊!!!

18,363

社区成员

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

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