socket编程代码例子
来源:互联网 发布:梦蝶云购源码 编辑:程序博客网 时间:2024/05/01 09:45
获得本机IP//#include <winsock2.h>//#pragma comment(lib,"WS2_32.lib")/*if(WSAStartup(MAKEWORD(2,2),&wsd)!=0){return -1;//失败}*///#pragma comment(lib,"WS2_32.lib")char szHostname[100],szHostaddress[200];if(gethostname(szHostname,info(szHostname))!=SOCKET_ERROR){HOSTENT *pHostEnt=gethostbyname(szHostname);if(pHostEnt!=NULL){sprintf(szHostaddress,"%d.%d.%d.%d",( pHostEnt->h_addr_list[0][0]&0x00ff ),( pHostEnt->h_addr_list[0][1]&0x00ff ),( pHostEnt->h_addr_list[0][2]&0x00ff ),( pHostEnt->h_addr_list[0][3]&0x00ff ));}}elsereturn;CString %%1(szHostaddress);4.端对端通信//#include <winsock2.h>//#pragma comment(lib,"WS2_32.lib")WSADATA wsd;SOCKET s;char buf[1024];if(WSAStartup(MAKEWORD(2,2),&wsd)!=0){return -1;//失败}s=socket(AF_INET,SOCK_DGRAM,0);if(s==INVALID_SOCKET){WSACleanup();return -1;//创建套接字失败}SOCKADDR_IN servAddr;servAddr.sin_family=AF_INET;servAddr.sin_addr.s_addr=inet_addr(%%1);servAddr.sin_port=htons(INADDR_ANY);;if(bind(s,(SOCKADDR*)&servAddr,sizeof(SOCKADDR_IN))==SOCKET_ERROR){closesocket(s);WSACleanup();return -1;//绑定套接字失败}SOCKADDR_IN clientAddr;int nClientlen=sizeof(clientAddr);ZeroMemory(buf,sizeof(buf));if(recvfrom(s,buf,size(buf),0,(SOCKADDR*)&clientAddr,nClientlen)==SOCKET_ERROR){closesocket(s);WSACleanup();return -1;//接收数据失败}CString %%2(buf);ZeroMemory(buf,sizeof(buf));strcpy(buf,%%3);servAddr.sin_family=AF_INET;servAddr.sin_addr.s_addr=inet_addr(%%4);servAddr.sin_port=htons((short)%%5);int nServAddrlen=size(servAddr);if(sendto(s,buf,sizeof(buf),0,(SOCKADDR*)&servAddr,nServAddrlen)==SOCKET_ERROR){closesocket(s);WSACleanup();return -1;//向服务器发送数据失败}closesocket(s);WSACleanup();5.点对点通信//#include <winsock2.h>//#pragma comment(lib,"WS2_32.lib")WSADATA wsd;SOCKADDR_IN addrServ,addrServ2;SOCKET sServer,sClient,sHost;int retVal;sockaddr_in addrClient;char buf[1024];static UINT port=%%2;BOOL listenerRun=TRUE;UINT Listen(LPVOID pParam){addrServ.sin_family=AF_INET;addrServ.sin_port=htons((UINT)pParam);addrServ.sin_addr.s_addr=INADDR_ANY;retVal=bind(sServer,(LPSOCKADDR)&addrServ,sizeof(SOCKADDR_IN));if(SOCKET_ERROR==retVal){closesocket(sServer);WSACleanup();return -1;//绑定套接字失败}retVal=listen(sServer,1);if(SOCKET_ERROR==retVal){closesocket(sServer);WSACleanup();return -1;//开始监听失败}int addrClientlen=sizeof(addrClient);sClient=accept(sServer(sockaddr FAR*)&addrClient,&addClientlen);if(INVALID_SOCKET==sClient){closesocket(sServer);WSACleanup();return -1;//接收客户端请求失败}while(listenerRun){ZeroMemory(buf,sizeof(buf));retVal=recv(sClient,buf,sizeof(buf));if(SOCKET_ERROR==retVal){closesocket(sServer);closesocket(sClient);WSACleanup();return -1;//接收客户端数据失败}CString %%4(buf);}}if(WSAStartup(MAKEWORD(2,2),&wsd)!=0){return -1;//失败}sServer=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(INVALID_SOCKET==sServer){WSACleanup();return -1;//创建套接字失败}CWinThread *pThread=AfxBeginThread(Listen,&port);sHost=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(INVALID_SOCKET==sHost){WSACleanup();return -1;//创建套接字失败}servAddr2.sin_family=AF_INET;servAddr2.sin_addr.s_addr=inet_addr(%%1);servAddr.sin_port=htons((short)%%3);int nServerAddrlen=sizeof(servAddr2);retVal=connect(sHost,(LPSOCKADDR)&servAddr2,sizeof(servAddr2));if(SOCKET_ERROR==retVal){closesocket(sHost);WSACleanup();return -1;//连接失败}zeroMemory(buf,sizeof(buf));strcpy(buf,%%5);retVal=send(sHost,buf,sizeof(buf),0);if(SOCKET_ERROR==retVal){closesocket(sHost);WSACleanup();return -1;//向发送数据失败}listenerRun=FALSE;DWORD dwExitCode;::GetExitCodeThread(pThread->m_hThread,&dwExitCode);pThread=null;closesocket(sServer);closesocket(sClient);closesocket(sHost);WSACleanup();
- socket编程代码例子
- linux socket编程简单例子//代码
- Windows socket 代码例子
- Socket 代码例子
- socket通信代码例子
- raw socket编程例子
- raw socket编程例子
- raw socket编程例子
- boost socket编程 例子
- raw socket编程例子 .
- boost socket编程 例子
- SOCKET 编程例子
- Socket通信编程例子
- socket编程例子
- linux socket编程 daemon例子
- Windows Socket API编程例子
- socket编程:select 用法 例子
- java socket编程小例子
- asp.net 发布网站
- 汇编语言学习记录--输入输出字符串
- 去百度面试,让大牛们喷喷你吧!
- Cis7服务器安装配置的完整步骤和注意事项
- CBESB-2.0 通过HTTP组件向外提供服务,然后通过自写的测试桩来测试,启多了线程就会OutOfMemory。
- socket编程代码例子
- "用户 'sa' 登录失败。原因: 该帐户被禁用。"的解决方案
- IS12 Changing Project Properties from the Command Line
- Bump Mapping综述
- 稳健+成长股池(转载)
- text格式短信
- C++ Socket编程的简单介绍
- ubuntu 输入法设置(ZT)
- 医学影像“调窗”(window-leveling)的算法