当前位置: 技术问答>linux和unix
windows代码翻译成Linux下的,Socket方面的
来源: 互联网 发布时间:2015-09-14
本文导语: 内容如下,请全部翻译成在linux下可编译的代码,即普通C++的代码 1、 WORD VersionRequest; struct WSAData stWSAData; VersionRequest=MAKEWORD(2,2); memset((char *)&stWSAData,0x00,sizeof(stWSAData)); if(WSAStartup(VersionRequest,&stWSAData)!=0) return ;...
内容如下,请全部翻译成在linux下可编译的代码,即普通C++的代码
1、
WORD VersionRequest;
struct WSAData stWSAData;
VersionRequest=MAKEWORD(2,2);
memset((char *)&stWSAData,0x00,sizeof(stWSAData));
if(WSAStartup(VersionRequest,&stWSAData)!=0) return ;
2、
WSACleanup();
3、
int iWSAerror;
iWSAerror = WSAGetLastError();
if(iWSAerror != WSAEWOULDBLOCK)
{
CloseSocket();
m_siStatus = CONNECT_ERROR;
return m_siStatus;
}
if(iWSAerror==WSAEWOULDBLOCK)
1、
WORD VersionRequest;
struct WSAData stWSAData;
VersionRequest=MAKEWORD(2,2);
memset((char *)&stWSAData,0x00,sizeof(stWSAData));
if(WSAStartup(VersionRequest,&stWSAData)!=0) return ;
2、
WSACleanup();
3、
int iWSAerror;
iWSAerror = WSAGetLastError();
if(iWSAerror != WSAEWOULDBLOCK)
{
CloseSocket();
m_siStatus = CONNECT_ERROR;
return m_siStatus;
}
if(iWSAerror==WSAEWOULDBLOCK)
|
第一段代码:在windows下是初始化Winsock动态库(ws2_32.dll或winsock.dll),根据版本号选择2.2的winsock动态库。在Linux下你不需要选择,因为只有一个版本的socket,而且都是系统调用,没有动态库,所以这段可以删除。
第二段代码:是对前面已经初始化的winsock动态库做清理,相当于卸载动态库,linux下你没有初始化过socket动态库,所以这句也删除。
第三段代码:
修改为:
#include
int ierror;
ierror = errno;
if(ierror != EWOULDBLOCK)
{
close(需要关闭的socket);
int m_siStatus;
m_siStatus = CONNECT_ERROR;
return m_siStatus;
}
if(ierror==EWOULDBLOCK){
}
第二段代码:是对前面已经初始化的winsock动态库做清理,相当于卸载动态库,linux下你没有初始化过socket动态库,所以这句也删除。
第三段代码:
修改为:
#include
int ierror;
ierror = errno;
if(ierror != EWOULDBLOCK)
{
close(需要关闭的socket);
int m_siStatus;
m_siStatus = CONNECT_ERROR;
return m_siStatus;
}
if(ierror==EWOULDBLOCK){
}
|
兄弟,如果要改成linux的话,重头再写吧!!!没有一句可以重用(int iWSAerror;除外)。
给你一段程序:#include
#include
#include
#include
#include
#include
int main(int argc,char *argv[])
{
int sock;
int val,cnt;
struct sockaddr_in myname;
struct sockaddr_in *nptr;
char buf[80];
struct hostent *hp,*gethostbyaddr();
if(argch_length);
if((connect(sock,&myname,sizeof(myname)))
给你一段程序:#include
#include
#include
#include
#include
#include
int main(int argc,char *argv[])
{
int sock;
int val,cnt;
struct sockaddr_in myname;
struct sockaddr_in *nptr;
char buf[80];
struct hostent *hp,*gethostbyaddr();
if(argch_length);
if((connect(sock,&myname,sizeof(myname)))
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。