请大家给些有关SOCKET的例子(如:TCP,UPD等),最好简单有些说明。易懂,谢谢!
解决方案 »
- 我有一个第三方命令行程序能接受stdin,我的程序怎么传数据给它呢?
- 怎么用VC 判断操作系统
- 关于 BHO 的问题 ,请各位帮忙
- 问大家一个关于类型转换的问题~急
- 多线程程序无响应问题
- 都三四年了,很想自已独立起来....
- 能否帮忙调试"完成端口"
- 服务器程序如何处理界面比较好?
- 用MFC创建了OLE DB数据库程序,可以访问到数据库ACCESS,但不能进行更新、添加、删除记录等操作
- 关于vc的两个小问题,希望给与解答,谢谢!!!
- 连接数据库,成功,但cmd->Execute(NULL, NULL, adCmdStoredProc)执行出错,
- 是不是安装 .NET FRAMWORK 才能用gdi+??
http://support.microsoft.com/default.aspx?scid=kb;en-us;185728
http://support.microsoft.com/default.aspx?scid=kb;en-us;214396
看看 《windows网络编程》其实就可以把SOCKET之上的编程了解的差不多
上面有很多的例子啊!
(1)构造CSocket对象,如下例:
CSocket ServerSocket;
CSocket ClientSocket;
(2)CSocket对象的Create函数用来创建Windows Socket,Create()函数会自行调用Bind()函数将此Socket绑定到指定的地址上面。如下例:
ServerSocket.Create(823); //服务器端需要指定一个端口号,我们用823。
ClientSocket.Create(); //客户端不用指定端口号。
(3)现在已经创建完基本的Socket对象了,现在我们来启动它,对于服务器端,我们需要这个Socket不停的监听是否有来自于网络上的连接请求,如下例:
ServerSocket.Listen(5);//参数5是表示我们的待处理Socket队列中最多能有几个Socket。
(4)对于客户端我们就要实行连接了,具体实现如下例:
ClientSocket.Connect(CString SerAddress,Unsinged int SerPort);//其中SerAddress是服务器的IP地址,SerPort是端口号。
(5)服务器是怎么来接受这份连接的呢?它会进一步调用Accept(ReceiveSocket)来接收它,而此时服务器端还须建立一个新的CSocket对象,用它来和客户端进行交流。如下例:
CSocket ReceiveSocket;
ServerSocket.Accept(ReceiveSocket);
(6)如果想在两个程序之间接收或发送信息,MFC也提供了相应的函数。如下例:
ServerSocket.Receive(String,Buffer); //String是你要发送的字符串,Buffer是发送字符串的缓冲区大小。
ServerSocket.Send(String,Butter);//String是你要接收的字符串,Buffer是接收字符串的缓冲区大小。
下面给大家举一个简单的例子。其中分为客户端和服务器端两个程序。
客户端:
请大家再MFC中创建如图的对话框。
其中主要代码如下:
void CClientDlg::OnButtonReceive()
{
CString strAddr="202.112.73.150";
unsigned int nPort=5050;
if(!ChatReceive.Create())
{
MessageBox("create failed","Receive",MB_ICONSTOP);
return;
}
else
{
ChatReceive.Connect(strAddr,nPort);
}
char sReceive[1024];
strAddr.Format(sReceive);
ChatReceive.Receive(sReceive,1024,0);
m_strEdit=sReceive;
UpdateData(FALSE);
ChatReceive.Close();
}
服务器端:
请大家在MFC中创建如图的对话框。
主要代码如下:
void CServerDlg::OnButtonSend()
{
// TODO: Add your control notification handler code here
CString strSendText;
unsigned int nPort=5050;
GetDlgItemText(IDC_EDIT,strSendText); if(!ChatSend.Create(nPort))
MessageBox("create failed");
else
{
ChatSend.Bind(nPort);
ChatSend.Listen();
ChatSend.Accept(server);
}
server.Send(strSendText,1000,0);
server.Close();
ChatSend.Close();
}
用原始套接字实现网络监听:http://www.vckbase.com/vckbase/default.aspx