MFC socket通信

zsy012 2013-11-11 03:49:59
服务器端程序

BOOL CTCP_SERVER_MFCDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 省略若干代码
// TODO: 在此添加额外的初始化代码
addr.sin_family=AF_INET;
addr.sin_port=htons(2978);
addr.sin_addr.S_un.S_addr=INADDR_ANY;

s=::socket(AF_INET,SOCK_STREAM,0);
::bind(s,(sockaddr*)&addr,sizeof(addr));
::listen(s,5);
GetDlgItem(IDC_TEXT)->EnableWindow(false);
GetDlgItem(IDC_ADDR)->SetWindowText(_T("服务器监听已经启动!"));
::WSAAsyncSelect(s,this->m_hWnd,WM_SOCKET,FD_ACCEPT|FD_READ);

return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}

LRESULT CTCP_SERVER_MFCDlg::OnSocket(WPARAM wParam, LPARAM lParam)
{
CString str;
char cs[100]={0};
MessageBox(_T("进入socket函数"));
GetDlgItem(IDC_TEXT)->EnableWindow(true);
switch(WSAGETSELECTEVENT(lParam))
{
case FD_ACCEPT:
{
MessageBox(_T("进入accept函数"));
int length=sizeof(addr1);
s1=::accept(s,(sockaddr*)&addr1,&length);
str.Format(_T("有1个客户已经连接上了"));
GetDlgItem(IDC_TEXT)->SetWindowText(str);
str+=::inet_ntoa(addr1.sin_addr);
str+="登录\n";
GetDlgItem(IDC_TEXT)->SetWindowText(str);
}
break;
case FD_READ:
{
MessageBox(_T("进入recv函数"));
CString num;
::recv(s1,cs,100,0);
GetDlgItem(IDC_TEXT)->GetWindowText(num);
num+="\n";
num+=(LPTSTR)::inet_ntoa(addr1.sin_addr);
num+="对您说:";
num+=(LPTSTR)cs;
GetDlgItem(IDC_TEXT)->SetWindowText(num);
}
break;
}
return 0;
}


void CTCP_SERVER_MFCDlg::OnBnClickedSend()
{
// TODO: 在此添加控件通知处理程序代码
CString str;
GetDlgItem(IDC_SENDTEXT)->GetWindowText(str);
if(str==" ")
MessageBox(_T("消息不能为空!"));
else
{
if(::send(s1,(const char*)str.GetBuffer(1),sizeof(str),0)!=SOCKET_ERROR)
{
GetDlgItem(IDC_TEXT)->SetWindowText(_T("消息已经发送到客户端!\n"));
GetDlgItem(IDC_TEXT)->GetWindowText(str);
str+="\n";
GetDlgItem(IDC_TEXT)->SetWindowText(str);
}
else
GetDlgItem(IDC_TEXT)->SetWindowText(_T("消息发送失败!\n"));
}
}




客服端程序

BOOL CTCP_CLIENT_MFCDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 省略若干程序
// TODO: 在此添加额外的初始化代码
GetDlgItem(IDC_SENDTEXT)->EnableWindow(false);
GetDlgItem(IDC_SEND)->EnableWindow(false);

s=::socket(AF_INET,SOCK_STREAM,0);
::WSAAsyncSelect(s,this->m_hWnd,WM_SOCKET, FD_READ);

return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
void CTCP_CLIENT_MFCDlg::OnBnClickedConnect()
{
// TODO: 在此添加控件通知处理程序代码
CString str,str1;
int port;
GetDlgItem(IDC_ADDR)->GetWindowText(str);
GetDlgItem(IDC_PORT)->GetWindowText(str1);
if(str==""||str1=="")
{
MessageBox(_T("服务器地址或端口不能为NULL"));
}
else
{
port=atoi((const char*)str1.GetBuffer(1));
addr.sin_family="127.0.0.1";
addr.sin_addr.S_un.S_addr=inet_addr((const char*)str.GetBuffer(1));
addr.sin_port=ntohs(port);
GetDlgItem(IDC_TEXT)->SetWindowText(_T("正在连接服务器......\r\n"));
if(::connect(s,(sockaddr*)&addr,sizeof(addr)))
{
GetDlgItem(IDC_TEXT)->GetWindowText(str);
str+="连接服务器成功!\r\n";
GetDlgItem(IDC_TEXT)->SetWindowText(str);
GetDlgItem(IDC_SENDTEXT)->EnableWindow(true);
GetDlgItem(IDC_SEND)->EnableWindow(true);
GetDlgItem(IDC_ADDR)->EnableWindow(false);
GetDlgItem(IDC_PORT)->EnableWindow(false);
}
else
{
GetDlgItem(IDC_TEXT)->GetWindowText(str);
str+="连接服务器失败!请重试\r\n";
GetDlgItem(IDC_TEXT)->SetWindowText(str);
MessageBox(_T("connect error!"));
}
}
}

void CTCP_CLIENT_MFCDlg::OnBnClickedSend()
{
// TODO: 在此添加控件通知处理程序代码
CString str,str1;
GetDlgItem(IDC_SENDTEXT)->GetWindowText(str);
if(str=="")
{
GetDlgItem(IDC_TEXT)->GetWindowText(str1);
//str1+="\r\n";
str1+="消息不能为空\r\n";
GetDlgItem(IDC_TEXT)->SetWindowText(str1);
}
else
{
::send(s,(const char*)str.GetBuffer(1),sizeof(str),0);
GetDlgItem(IDC_TEXT)->GetWindowText(str1);
str1+="\r\n";
str1+=str;
GetDlgItem(IDC_TEXT)->SetWindowText(str1);
}
}

LRESULT CTCP_CLIENT_MFCDlg::OnSocket(WPARAM wParam,LPARAM lParam)
{
char cs[100]={0};
if(WSAGETSELECTEVENT(lParam)==FD_READ)
{
CString num;
recv(s,cs,100,0);
GetDlgItem(IDC_TEXT)->GetWindowText(num);
num+="\r\n服务器说:";
num+=(LPTSTR)cs;
GetDlgItem(IDC_TEXT)->SetWindowText(num);
}
return 0;
}


发现服务器端程序根本就没有进入函数LRESULT CTCP_SERVER_MFCDlg::OnSocket(WPARAM wParam, LPARAM lParam),accept函数也就没有执行,网络连接不成功,网上好像也有很多人碰见这样的问题,但是感觉都没有解决,这到底是什么问题,跪求高手指点!!!
...全文
303 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
版主大哥 2013-11-15
  • 打赏
  • 举报
回复
引用 19 楼 zsy012 的回复:
[quote=引用 18 楼 xihu1364 的回复:] 你把客户端响应连接按钮那地方改一下吧...不知道你为啥这么粗心...

		addr.sin_family=AF_INET;
		//addr.sin_addr.S_un.S_addr=inet_addr((const char*)str.GetBuffer(1));
		//addr.sin_addr.S_un.S_addr=inet_addr((LPSTR)(LPCTSTR)(str));
		port = atoi((const char*)str1.GetBuffer(0));
		addr.sin_port=htons(port);
还有客户端选择了异步选择模式,connect函数是异步的。我一般将connect函数为同步,也就是在连接成功以后再::WSAAsyncSelect(s,this->m_hWnd,WM_SOCKET, FD_READ | FD_CLOSE); 还有在server端

LRESULT CTCP_SERVER_MFCDlg::OnSocket(WPARAM wParam, LPARAM lParam)
{
	if (WSAGETSELECTERROR(lParam))
	{
		closesocket(wParam);
		return 0;
	}
	CString str;
	char cs[100]={0};
	//MessageBox(_T("进入socket函数"));
	GetDlgItem(IDC_TEXT)->EnableWindow(true);
	switch(WSAGETSELECTEVENT(lParam))
	{
		case FD_ACCEPT:
			{
				//MessageBox(_T("进入accept函数"));
				int length=sizeof(addr1);
				s1=::accept(s,(sockaddr*)&addr1,&length);

				if (s1 != INVALID_SOCKET)//加上这里,这里连接后,关联起来
				{
					::WSAAsyncSelect(s1,this->m_hWnd,WM_SOCKET,FD_READ);
				}
				
				str.Format(_T("有1个客户已经连接上了\r\n"));
				GetDlgItem(IDC_TEXT)->SetWindowText(str);
				str+=::inet_ntoa(addr1.sin_addr);
				str+="登录\r\n";
				GetDlgItem(IDC_TEXT)->SetWindowText(str);
			}
			break;
		case FD_READ:
			{
				MessageBox(_T("进入recv函数"));
				CString num;
				::recv(s1,cs,100,0);
				GetDlgItem(IDC_TEXT)->GetWindowText(num);
				num+="\r\n";
				num+=(LPTSTR)::inet_ntoa(addr1.sin_addr);
				num+="对您说:";
				num+=(LPTSTR)cs;
				GetDlgItem(IDC_TEXT)->SetWindowText(num);
			}
			break;
	}
	return 0;
}

你电脑上调试通过了?我这样改还是不行啊。。[/quote] 当然通过了,收发消息正常. 你能细心点吗? 第一:BOOL CTCP_CLIENT_MFCDlg::OnInitDialog()中的::WSAAsyncSelect(s,this->m_hWnd,WM_SOCKET,FD_READ | FD_CLOSE);建议放到connect连接成功以后(不用FD_ACCEPT)“将connect同步” 第二: addr.sin_family=AF_INET; 第三: port = atoi((const char*)str1.GetBuffer(0)); 第四: addr.sin_port=htons(port); 你是写的ntohs 第五: if(::connect(s,(sockaddr*)&addr,sizeof(addr))) connect的返回值为0即成功非0失败 第六: 服务器端,case FD_ACCEPT:的地方,accept一个socket后,你得关联起来::WSAAsyncSelect(s1,this->m_hWnd,WM_SOCKET,FD_READ); 就这些了.
wxliangzyt 2013-11-15
  • 打赏
  • 举报
回复
不都是addr.sin_family=AF_INET的么 你那个能编译过?
zsy012 2013-11-15
  • 打赏
  • 举报
回复
引用 22 楼 xihu1364 的回复:
[quote=引用 19 楼 zsy012 的回复:] [quote=引用 18 楼 xihu1364 的回复:] 你把客户端响应连接按钮那地方改一下吧...不知道你为啥这么粗心...

		addr.sin_family=AF_INET;
		//addr.sin_addr.S_un.S_addr=inet_addr((const char*)str.GetBuffer(1));
		//addr.sin_addr.S_un.S_addr=inet_addr((LPSTR)(LPCTSTR)(str));
		port = atoi((const char*)str1.GetBuffer(0));
		addr.sin_port=htons(port);
还有客户端选择了异步选择模式,connect函数是异步的。我一般将connect函数为同步,也就是在连接成功以后再::WSAAsyncSelect(s,this->m_hWnd,WM_SOCKET, FD_READ | FD_CLOSE); 还有在server端

LRESULT CTCP_SERVER_MFCDlg::OnSocket(WPARAM wParam, LPARAM lParam)
{
	if (WSAGETSELECTERROR(lParam))
	{
		closesocket(wParam);
		return 0;
	}
	CString str;
	char cs[100]={0};
	//MessageBox(_T("进入socket函数"));
	GetDlgItem(IDC_TEXT)->EnableWindow(true);
	switch(WSAGETSELECTEVENT(lParam))
	{
		case FD_ACCEPT:
			{
				//MessageBox(_T("进入accept函数"));
				int length=sizeof(addr1);
				s1=::accept(s,(sockaddr*)&addr1,&length);

				if (s1 != INVALID_SOCKET)//加上这里,这里连接后,关联起来
				{
					::WSAAsyncSelect(s1,this->m_hWnd,WM_SOCKET,FD_READ);
				}
				
				str.Format(_T("有1个客户已经连接上了\r\n"));
				GetDlgItem(IDC_TEXT)->SetWindowText(str);
				str+=::inet_ntoa(addr1.sin_addr);
				str+="登录\r\n";
				GetDlgItem(IDC_TEXT)->SetWindowText(str);
			}
			break;
		case FD_READ:
			{
				MessageBox(_T("进入recv函数"));
				CString num;
				::recv(s1,cs,100,0);
				GetDlgItem(IDC_TEXT)->GetWindowText(num);
				num+="\r\n";
				num+=(LPTSTR)::inet_ntoa(addr1.sin_addr);
				num+="对您说:";
				num+=(LPTSTR)cs;
				GetDlgItem(IDC_TEXT)->SetWindowText(num);
			}
			break;
	}
	return 0;
}

你电脑上调试通过了?我这样改还是不行啊。。[/quote] 当然通过了,收发消息正常. 你能细心点吗? 第一:BOOL CTCP_CLIENT_MFCDlg::OnInitDialog()中的::WSAAsyncSelect(s,this->m_hWnd,WM_SOCKET,FD_READ | FD_CLOSE);建议放到connect连接成功以后(不用FD_ACCEPT)“将connect同步” 第二: addr.sin_family=AF_INET; 第三: port = atoi((const char*)str1.GetBuffer(0)); 第四: addr.sin_port=htons(port); 你是写的ntohs 第五: if(::connect(s,(sockaddr*)&addr,sizeof(addr))) connect的返回值为0即成功非0失败 第六: 服务器端,case FD_ACCEPT:的地方,accept一个socket后,你得关联起来::WSAAsyncSelect(s1,this->m_hWnd,WM_SOCKET,FD_READ); 就这些了.[/quote] 是不是我电脑设置问题,还是不行啊?麻烦你把你改好的那两个cpp文件发我邮箱,我再运行一下,谢谢了!
版主大哥 2013-11-14
  • 打赏
  • 举报
回复
你把客户端响应连接按钮那地方改一下吧...不知道你为啥这么粗心...

		addr.sin_family=AF_INET;
		//addr.sin_addr.S_un.S_addr=inet_addr((const char*)str.GetBuffer(1));
		//addr.sin_addr.S_un.S_addr=inet_addr((LPSTR)(LPCTSTR)(str));
		port = atoi((const char*)str1.GetBuffer(0));
		addr.sin_port=htons(port);
还有客户端选择了异步选择模式,connect函数是异步的。我一般将connect函数为同步,也就是在连接成功以后再::WSAAsyncSelect(s,this->m_hWnd,WM_SOCKET, FD_READ | FD_CLOSE); 还有在server端

LRESULT CTCP_SERVER_MFCDlg::OnSocket(WPARAM wParam, LPARAM lParam)
{
	if (WSAGETSELECTERROR(lParam))
	{
		closesocket(wParam);
		return 0;
	}
	CString str;
	char cs[100]={0};
	//MessageBox(_T("进入socket函数"));
	GetDlgItem(IDC_TEXT)->EnableWindow(true);
	switch(WSAGETSELECTEVENT(lParam))
	{
		case FD_ACCEPT:
			{
				//MessageBox(_T("进入accept函数"));
				int length=sizeof(addr1);
				s1=::accept(s,(sockaddr*)&addr1,&length);

				if (s1 != INVALID_SOCKET)//加上这里,这里连接后,关联起来
				{
					::WSAAsyncSelect(s1,this->m_hWnd,WM_SOCKET,FD_READ);
				}
				
				str.Format(_T("有1个客户已经连接上了\r\n"));
				GetDlgItem(IDC_TEXT)->SetWindowText(str);
				str+=::inet_ntoa(addr1.sin_addr);
				str+="登录\r\n";
				GetDlgItem(IDC_TEXT)->SetWindowText(str);
			}
			break;
		case FD_READ:
			{
				MessageBox(_T("进入recv函数"));
				CString num;
				::recv(s1,cs,100,0);
				GetDlgItem(IDC_TEXT)->GetWindowText(num);
				num+="\r\n";
				num+=(LPTSTR)::inet_ntoa(addr1.sin_addr);
				num+="对您说:";
				num+=(LPTSTR)cs;
				GetDlgItem(IDC_TEXT)->SetWindowText(num);
			}
			break;
	}
	return 0;
}

木头人来也 2013-11-14
  • 打赏
  • 举报
回复
WSADATA wsd; WSAStartup(MAKEWORD(2,2),&wsd); 有这个初始化没有?
zsy012 2013-11-14
  • 打赏
  • 举报
回复
引用 18 楼 xihu1364 的回复:
你把客户端响应连接按钮那地方改一下吧...不知道你为啥这么粗心...

		addr.sin_family=AF_INET;
		//addr.sin_addr.S_un.S_addr=inet_addr((const char*)str.GetBuffer(1));
		//addr.sin_addr.S_un.S_addr=inet_addr((LPSTR)(LPCTSTR)(str));
		port = atoi((const char*)str1.GetBuffer(0));
		addr.sin_port=htons(port);
还有客户端选择了异步选择模式,connect函数是异步的。我一般将connect函数为同步,也就是在连接成功以后再::WSAAsyncSelect(s,this->m_hWnd,WM_SOCKET, FD_READ | FD_CLOSE); 还有在server端

LRESULT CTCP_SERVER_MFCDlg::OnSocket(WPARAM wParam, LPARAM lParam)
{
	if (WSAGETSELECTERROR(lParam))
	{
		closesocket(wParam);
		return 0;
	}
	CString str;
	char cs[100]={0};
	//MessageBox(_T("进入socket函数"));
	GetDlgItem(IDC_TEXT)->EnableWindow(true);
	switch(WSAGETSELECTEVENT(lParam))
	{
		case FD_ACCEPT:
			{
				//MessageBox(_T("进入accept函数"));
				int length=sizeof(addr1);
				s1=::accept(s,(sockaddr*)&addr1,&length);

				if (s1 != INVALID_SOCKET)//加上这里,这里连接后,关联起来
				{
					::WSAAsyncSelect(s1,this->m_hWnd,WM_SOCKET,FD_READ);
				}
				
				str.Format(_T("有1个客户已经连接上了\r\n"));
				GetDlgItem(IDC_TEXT)->SetWindowText(str);
				str+=::inet_ntoa(addr1.sin_addr);
				str+="登录\r\n";
				GetDlgItem(IDC_TEXT)->SetWindowText(str);
			}
			break;
		case FD_READ:
			{
				MessageBox(_T("进入recv函数"));
				CString num;
				::recv(s1,cs,100,0);
				GetDlgItem(IDC_TEXT)->GetWindowText(num);
				num+="\r\n";
				num+=(LPTSTR)::inet_ntoa(addr1.sin_addr);
				num+="对您说:";
				num+=(LPTSTR)cs;
				GetDlgItem(IDC_TEXT)->SetWindowText(num);
			}
			break;
	}
	return 0;
}

你电脑上调试通过了?我这样改还是不行啊。。
zsy012 2013-11-13
  • 打赏
  • 举报
回复
引用 16 楼 xihu1364 的回复:
把你QQ发上,我加你
710688257
yaozhiyong110 2013-11-12
  • 打赏
  • 举报
回复
把里面的端口改成你自己的...
yaozhiyong110 2013-11-12
  • 打赏
  • 举报
回复
h里:virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam); cpp里: LRESULT CSocket_Wsaasyncselect_ModelDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { // TODO: 在此添加专用代码和/或调用基类 // WSADATA wsd; static SOCKET sListen; SOCKET sClient; SOCKADDR_IN local, client; int ret, iAddrSize = sizeof(client); char szMessage[MSGSIZE]; switch (message) { case WM_CREATE: // Initialize Windows Socket library // WSAStartup(0x0202, &wsd); // Create listening socket sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); // Bind local.sin_addr.S_un.S_addr = htonl(INADDR_ANY); local.sin_family = AF_INET; local.sin_port = htons(PORT); bind(sListen, (struct sockaddr *)&local, sizeof(local)); // Listen listen(sListen, 3); // Associate listening socket with FD_ACCEPT event WSAAsyncSelect(sListen, m_hWnd, WM_SOCKET, FD_ACCEPT);//让这个socket关心accept的事件 其他的都不关心 return 0; case WM_DESTROY: closesocket(sListen); WSACleanup(); PostQuitMessage(0); return 0; case WM_SOCKET: if (WSAGETSELECTERROR(lParam)) { closesocket(wParam); return 0; } switch (WSAGETSELECTEVENT(lParam))//判断来的是什么样的事件 { case FD_ACCEPT: // Accept a connection from client sClient = accept(wParam, (struct sockaddr *)&client, &iAddrSize); // MessageBox(inet_ntoa(client.sin_addr)); // Associate client socket with FD_READ and FD_CLOSE event WSAAsyncSelect(sClient, m_hWnd, WM_SOCKET, FD_READ | FD_CLOSE);//让这个socket关心read write的事件 break; case FD_READ: ret = recv(wParam, szMessage, MSGSIZE, 0); if (ret == 0 || ret == SOCKET_ERROR && WSAGetLastError() == WSAECONNRESET) { closesocket(wParam); } else { szMessage[ret] = '\0'; send(wParam, szMessage, (int)(strlen(szMessage)), 0); } break; case FD_CLOSE: closesocket(wParam); // MessageBox("已断开!"); break; } default: return CDialog::WindowProc(message, wParam, lParam); break; } return 0; }
zsy012 2013-11-12
  • 打赏
  • 举报
回复
引用 8 楼 xihu1364 的回复:

switch(WSAGETSELECTEVENT(lParam))    
{        
    case FD_ACCEPT:
     //这个部分看你接收到一个连接以后你怎么不关联事件呢?WSAAsyncSelect关联可读可写啊

啥意思?::WSAAsyncSelect(s,this->m_hWnd,WM_SOCKET,FD_ACCEPT|FD_READ);这不是关联了吗?有没有qq联系一下啊,我把程序发过来,帮我调试一下
zsy012 2013-11-12
  • 打赏
  • 举报
回复
引用 9 楼 yaozhiyong110 的回复:
[quote=引用 7 楼 zsy012 的回复:] [quote=引用 4 楼 allenltiverson 的回复:] addr.sin_family="127.0.0.1";确实你这个赋值简直牛B。。服务器端都是对的,怎么到客户端就错了?太粗心了吧
回复:不好意思,程序里面写错了,应该就是addr.sin_family=AF_INET,程序的错误不是这个问题,而是,客户端发了connect请求之后,服务器没有响应[/quote] 你消息映射了加了ON_MESSAGE(WM_SOCKET, OnSocket)吗?[/quote] 肯定是加了的,有没有qq联系一下啊,我把程序发过来
yaozhiyong110 2013-11-12
  • 打赏
  • 举报
回复
引用 7 楼 zsy012 的回复:
[quote=引用 4 楼 allenltiverson 的回复:] addr.sin_family="127.0.0.1";确实你这个赋值简直牛B。。服务器端都是对的,怎么到客户端就错了?太粗心了吧
回复:不好意思,程序里面写错了,应该就是addr.sin_family=AF_INET,程序的错误不是这个问题,而是,客户端发了connect请求之后,服务器没有响应[/quote] 你消息映射了加了ON_MESSAGE(WM_SOCKET, OnSocket)吗?
版主大哥 2013-11-12
  • 打赏
  • 举报
回复

switch(WSAGETSELECTEVENT(lParam))    
{        
    case FD_ACCEPT:
     //这个部分看你接收到一个连接以后你怎么不关联事件呢?WSAAsyncSelect关联可读可写啊

zsy012 2013-11-12
  • 打赏
  • 举报
回复
引用 4 楼 allenltiverson 的回复:
addr.sin_family="127.0.0.1";确实你这个赋值简直牛B。。服务器端都是对的,怎么到客户端就错了?太粗心了吧
回复:不好意思,程序里面写错了,应该就是addr.sin_family=AF_INET,程序的错误不是这个问题,而是,客户端发了connect请求之后,服务器没有响应
zsy012 2013-11-12
  • 打赏
  • 举报
回复
引用 1 楼 yaozhiyong110 的回复:
addr.sin_family="127.0.0.1"; 这个是什么意思?
回复:不好意思,程序里面写错了,应该就是addr.sin_family=AF_INET,程序的错误不是这个问题,而是,客户端发了connect请求之后,服务器没有响应
zsy012 2013-11-12
  • 打赏
  • 举报
回复
不好意思,程序里面写错了,应该就是addr.sin_family=AF_INET,程序的错误不是这个问题,而是,客户端发了connect请求之后,服务器没有响应
allenltiverson 2013-11-12
  • 打赏
  • 举报
回复
addr.sin_family="127.0.0.1";确实你这个赋值简直牛B。。服务器端都是对的,怎么到客户端就错了?太粗心了吧
版主大哥 2013-11-12
  • 打赏
  • 举报
回复
把你QQ发上,我加你
zsy012 2013-11-12
  • 打赏
  • 举报
回复
引用 13 楼 yaozhiyong110 的回复:
把里面的端口改成你自己的...
新手求带啊,刚刚接触这方面的东西!很多不懂,给你们做过的一看,说不定就能看出问题来!
zsy012 2013-11-12
  • 打赏
  • 举报
回复
引用 13 楼 yaozhiyong110 的回复:
把里面的端口改成你自己的...
还是不行啊,能不能把你邮箱发给我,我发给你看看,纠结了我好久,麻烦你了,帮我看看,十分感谢!!!
加载更多回复(3)

18,356

社区成员

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

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