当前位置: 技术问答>linux和unix
Windows和Linux之间的Socket通讯问题
来源: 互联网 发布时间:2015-12-21
本文导语: 从Linux中,可以发送一串字符(UDP)到Windows机器的端口,程序也可以接收到, 但我从Windows机器中用UDP发了个串字符到Linux机器,发送是成功了,但立刻被返回了一个空消息,Linux那边监视的什么都没有接收到,并且只...
从Linux中,可以发送一串字符(UDP)到Windows机器的端口,程序也可以接收到,
但我从Windows机器中用UDP发了个串字符到Linux机器,发送是成功了,但立刻被返回了一个空消息,Linux那边监视的什么都没有接收到,并且只有向那台Linux的机器上发送字符串的时候才被返回空消息,局域网内所有的都没这情况,包括未占用的IP。有人知道这是为什么吗?
但我从Windows机器中用UDP发了个串字符到Linux机器,发送是成功了,但立刻被返回了一个空消息,Linux那边监视的什么都没有接收到,并且只有向那台Linux的机器上发送字符串的时候才被返回空消息,局域网内所有的都没这情况,包括未占用的IP。有人知道这是为什么吗?
|
我记得LINUX下和WINDOW下的套接字的程序不一样的.你是不是什么地方没有设置好?
建议写好的WINDOWS端的C/S和LINUX下的C/S先各自测试,然后再测试.
建议写好的WINDOWS端的C/S和LINUX下的C/S先各自测试,然后再测试.
|
linux 下的socket和windows下的socket是不一样的
Linux下的是一个整数,而widowns32下的是一个指针。
CLS_Socket::CLS_Socket()
{
m_iSocket=-1;
m_iStatus=SS_UNUSED;
m_iSocketError=0;
#ifdef _WIN32
WSADATA wsaData;
if(!g_iSockCount)
{
if (WSAStartup(0x202, &wsaData) == SOCKET_ERROR)
WSACleanup();
}
g_iSockCount++;
#endif
}
int CLS_Socket::CreateSocket()
{
if(m_iSocket>-1)
CloseSocket();
m_iSocket = socket(AF_INET, SOCK_STREAM, 0);
if(m_iSocket>-1)
m_iStatus=SS_CREATED;
return m_iSocket;
}
int CLS_Socket::CloseSocket()
{
int iRet;
#ifdef _WIN32
iRet=closesocket(m_iSocket);
#else
iRet=close(m_iSocket);
#endif
m_iSocket=-1;
m_iStatus=SS_UNUSED;
return iRet;
}
protected:
int m_iSocket; // socket id
int m_iStatus; // socket status
int m_iSocketError;
Linux下的是一个整数,而widowns32下的是一个指针。
CLS_Socket::CLS_Socket()
{
m_iSocket=-1;
m_iStatus=SS_UNUSED;
m_iSocketError=0;
#ifdef _WIN32
WSADATA wsaData;
if(!g_iSockCount)
{
if (WSAStartup(0x202, &wsaData) == SOCKET_ERROR)
WSACleanup();
}
g_iSockCount++;
#endif
}
int CLS_Socket::CreateSocket()
{
if(m_iSocket>-1)
CloseSocket();
m_iSocket = socket(AF_INET, SOCK_STREAM, 0);
if(m_iSocket>-1)
m_iStatus=SS_CREATED;
return m_iSocket;
}
int CLS_Socket::CloseSocket()
{
int iRet;
#ifdef _WIN32
iRet=closesocket(m_iSocket);
#else
iRet=close(m_iSocket);
#endif
m_iSocket=-1;
m_iStatus=SS_UNUSED;
return iRet;
}
protected:
int m_iSocket; // socket id
int m_iStatus; // socket status
int m_iSocketError;
|
把你windows 的代码贴出来我看看