******************新手问题,请对我写的程序提供建议(最好直接指出代码的那个地方不好)********************
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;
}