随笔分类 - [04]Socket/通信
摘要:[代码]下面是select模型的举例:代码 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--1SOCKETm_sockSrv=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);2if(m_sockSrv==INVALID_SOCKET)3 {4 cout"Error:"WSAGetLastError()endl;5returnfalse;6 }7SOCKADDR_INaddrSrv;8 addrSrv.s
阅读全文
摘要:本文参考于《Windows网络与通信程序设计》基于WSAEventSelect模型的服务器设计对于WSAEventSelect模型,一个工作线程最多能够处理64个套接字,故采用线程池来管理大于64个套接字的请求。//定义套接字结构体typedef struct _SOCKET_OBJ{ SOCKET s; //套接字句柄 HANDLE event; //与此套接...
阅读全文
摘要:编译环境VS2008,UNICODE编码#include <atlconv.h>BYTE m_MAC[10][6];//the mac address of this computer, 10 NICsint m_nMAC;void CGetAdapterMacDlg::GetMac(){ PIP_ADAPTER_INFO pAdapterInfo; PIP_ADAPTER_INF...
阅读全文
摘要:BOOL GetLocalHostInfo(){ //得到主机名称 int nComputerNameLen; nComputerNameLen = MAX_COMPUTERNAME_LENGTH + 1; if(SOCKET_ERROR == gethostname(m_chLocalHostName,nComputerNameLen)) return FALSE; //////...
阅读全文
摘要:我们为什么要使用Socket I/O模型呢?还得从Socket的阻塞和非阻塞说起。在网上看过一篇讲解I/O模型的文章,它举过一个例子觉得挺好,那就是收信的例子。比如:老周在等待他女儿从美国寄过来的信件,老周住三楼,信箱在一楼。有以下几种情况:第一:老周一直守在信箱旁边,直到收到信件为止。这样太费精力。这就好比是阻塞套接字。第二:老周到信箱那里看一下,发现还没有来,就马上回家了。这就好比非阻塞套接字...
阅读全文
摘要:Socket(套接字) ◆先看定义: typedef unsigned int u_int; typedef u_int SOCKET; ◆Socket相当于进行网络通信两端的插座,只要对方的Socket和自己的Socket有通信联接,双方就可以发送和接收数据了。其定义类似于文件句柄的定义。 ◆Socket有五种不同的类型: 1、流式套接字(stream soc...
阅读全文
摘要:首先加载套接字库#include <winsock2.h> //套接字库头文件还需要为工程添加连接ws2_32.libWORD wVersionRequested;WSADATA wsaData;int err;wVersionRequested = MAKEWORD(2,2);err = WSAStartup(wVersionRequested,&wsaData);if(er...
阅读全文
摘要:管道可以实现本地和网络上两个进程的通信服务器端:::OnPipeCreate() //创建命名管道{ hPipe = CreateNamedPipe("\\\\.\\pipe\\MyPipe",PIPE_ACCESS_DUPLEX|FILE_FLAG_OVERLAPPED, 0,1,1024,1024,0,NULL); if(INVALID_HANDLE_VALUE == hPipe) ...
阅读全文
摘要:邮槽 在网络上进程通信为单向方式::OnMailslotRecv() //接收端即为服务器端{ HANDLE hMailslot; CString mailhostName(""); mailhostName= "\\\\.\\mailslot\\MyRecvMailslot"; hMailslot = CreateMailslot(mailhostName,0, MAILSLOT_WA...
阅读全文
摘要:void CInterChatApp::GetHostInfo(CString &hostIP,CString &hostname){ DWORD dwsize = 255; char username[255]; if(::GetComputerName(&username[0], &dwsize)) { hostent *pHost; p...
阅读全文
摘要://加载套接字库WORD wVersionRequested;//套接字库版本信息WSADATA wsaData;int err;wVersionRequested = MAKEWORD(1,1);err = WSAStartup(wVersionRequested,&wsaData);if(err != 0){ //加载失败 return;}if(LOBYTE(wsaData.wVer...
阅读全文

浙公网安备 33010602011771号