| 发表于:2007-04-16 08:36:50 楼主 |
1 该代码最终是一个dll,供应用程序来调用 2 该代码是针对通过网口转串口连接的设备进行通信而编写的 3 不用多线程和异步接收发送!! short __declspec(dllexport) __stdcall connect(uint sockport,char *addr) { //initial short errorcode =socket_success; //create sock word wversionrequested; wsadata wsadata; wversionrequested = makeword(1,1); errorcode = wsastartup(wversionrequested,&wsadata); if(errorcode != 0){ return socket_notinitial;} if(lobyte(wsadata.wversion)!=1 ¦ ¦hibyte(wsadata.wversion)!= 1) { wsacleanup(); errorcode = socket_paramerr; //系统错误 2 return errorcode; } mysock = socket(af_inet,sock_stream,0); sockaddr_in addrsrv; addrsrv.sin_addr.s_un.s_addr = inet_addr(addr); addrsrv.sin_family = af_inet; addrsrv.sin_port = htons(sockport); short res =0x00; dword err; err = connect(mysock,(lpsockaddr)&addrsrv,sizeof(addrsrv)); if(err !=0) { res = socket_linkerr; //系统错误3 连接错误 } return res; } short __declspec(dllexport) __stdcall close() { if(mysock) { closesocket(mysock); wsacleanup(); } return socket_success; } short __declspec(dllexport) __stdcall senddata(char * pbuf,int len) { int res = socket_success; if(!mysock) { return socket_notinitial; //软件错误 没有初始化 } res = send(mysock,pbuf,len,0); if(res != len){ res = senderror; }//软件错误,发送异常 else res = socket_success; return res; } short __declspec(dllexport) __stdcall readdata(char * pbuf,int len) { res =recv(mysock,pbuf,len,0); int err = wsagetlasterror(); if (res != socket_error ¦ ¦ res > 0) res = socket_success else res = socket_failed; return res; } |
|
|
|
|