用socket不论你是几个局域网都可以的。
解决方案 »
- 如何获取一个CDialog的IDD
- char *pArray={"捐款,会员,积分,账户,付款,回复"}; char *subStr=&pArray[1];subStr值是多少?
- recttracker能否改变 把手和线框的颜色
- 怎样通过编程断开和连接上网络,就像防火墙有这个功能?
- 100寻找大牛....(dll动态创建ocx给外部程序使用)
- 请牛人介绍几本关于windows系统服务的书呗~谢谢!
- 用MFC做的ActiveX控件,OnDraw时绘制位图,在TestContainer中OK,插入word则绘制失败,请大家指教!
- 自定义CObject类作为参数的问题
- OpenGL缩放问题,求高手指点!
- 如何打印超文本文件?
- 如何向一个DIRECTX全屏游戏发送鼠标点击消息?
- @@@@@@@@@怎样在一个试图中向两个表添加数据??????????&&&&&&&&&&&
virtual void OnReceive(int nErrorCode); //}}AFX_VIRTUAL } mysocket.cpp文件中的有关部分: void ServeSocket::OnReceive(int nErrorCode) { if(Receive(rx_buf,100)) {//重新发出收到的信息 MessageBeep(0); AfxMessageBox(rx_buf); Send(rx_buf,10); } else {//接收错误 AfxMessageBox("receive failed",14); return; } CAsyncSocket::OnReceive(nErrorCode); } void MySocket::OnAccept(int nErrorCode) { if(AcceptNo>4) return; if(!Accept(servesocket[AcceptNo])) {//接收请求失败 AfxMessageBox("accept fail!",12); } else {//接收请求成功 servesocket[AcceptNo].ServeNo=AcceptNo; switch(AcceptNo) {//根据接收次序,向客户端发出信息 case 0: {servesocket[AcceptNo].Send("Message 0",10);break;} case 1: {servesocket[AcceptNo].Send("Message 1",10);break;} case 2: {servesocket[AcceptNo].Send("Message 2",10);break;} case 3: {servesocket[AcceptNo].Send("Message 3",10);break;} case 4: {servesocket[AcceptNo].Send("Message 4",10);break;} default: break; } // AfxMessageBox("accept client!",14); AcceptNo++; } CAsyncSocket::OnAccept(nErrorCode); } void MySocket::OnReceive(int nErrorCode) { if(Receive(rx_buf,100)) {//将收到的信息重新发出 MessageBeep(0); AfxMessageBox(rx_buf); Send(rx_buf,10); } else {//接收错误 AfxMessageBox("receive failed",14); return; } CAsyncSocket::OnReceive(nErrorCode); } 3.childview.h文件中的有关部分 class CChildView : public CWnd { ...public: MySocket Socket_id; //定义套接字类...protected: //{{AFX_MSG(CChildView)} afx_msg void OnPaint(); afx_msg void OnClient(); afx_msg void OnServer(); //}}AFX_MSG DECLARE_MESSAGE_MAP() } 4.childview.cpp文件中的有关部分 BEGIN_MESSAGE_MAP(CChildView,CWnd ) //{{AFX_MSG_MAP(CChildView) ON_WM_PAINT() ON_COMMAND(ID_CLIENT, OnClient) //菜单项ID_CLIENT将程序设置为客户端 ON_COMMAND(ID_SERVER, OnServer) //菜单项ID_CLIENT将程序设置为服务端 //}}AFX_MSG_MAP END_MESSAGE_MAP() void CChildView::OnClient() { CClientDC dc(this); //Creat a socket Socket_id.Create(); dc.TextOut(200,100,"connect",7); if(Socket_id.Connect("192.0.0.0",2000)) //服务端主机IP地址和端口号 dc.TextOut(200,120,"connect fail!",13); else dc.TextOut(200,120,"connect successful!",18); } void CChildView::OnServer() { CClientDC dc(this); //创建已定义的套接字 Socket_id.Create(2000); //为其分配一个端口(2000) //Socket_id.Bind(2000,"192.0.0.0"); //端口号和服务端主机IP地址。不同的主机此地址不同。 //开始监听 dc.TextOut(200,100,"listen",6); Socket_id.Listen(); }
先实例化一个WinSocket对象
msdn里面有例子和说明,看仔细点
你能否说清楚些?谢谢!
那如果一个 mode上网,一个是局域网内,有何方法呢?
你的解释让我明白了许多。thanks,very much!过后一定给你分!但现在我想再听听是否还有更好的想法。