- 论坛徽章:
- 0
|
代码如下:
这个是Linux下写的服务器端程序:
int main (int argc, char *argv[])
{
int i;
for (i = 0; i < MAX_COUNT; i++)
a_sock = -1;
l_sock = socket (AF_INET, SOCK_STREAM, 0);
sock_addr.sin_family = AF_INET;
sock_addr.sin_port = htons (L_PORT);
sock_addr.sin_addr.s_addr = htonl (INADDR_ANY);
if (bind (l_sock, (struct sockaddr *)&sock_addr, sizeof (sock_addr)) < 0)
{
close (l_sock);
printf ("can not bind!\n");
return 0;
}
if (listen (l_sock, 5) != 0)
{
close (l_sock);
printf ("can not listen!\n");
return 0;
}
while (1)
{
int sock_count = getcount ();
int sock_len = sizeof (sock_addr);
if ((a_sock[sock_count] = accept (l_sock, (struct sockaddr *)&sock_addr, &sock_len)) < 0)
{
close (l_sock);
printf ("can not accept!\n");
return 0;
}
printf ("accept success!\n");
if ((fork ()) == 0)
{
int pid = getpid ();
close (l_sock);
}
}
return 0;
}
程序编译和运行都正常的,在监听状态
这个是windows下的客户端程序:(其他没关联部分我都省略了)
m_cSock = socket (AF_INET, SOCK_STREAM, 0);
m_cAddr.sin_addr.S_un.S_addr = htonl (inet_addr (s_IP));
m_cAddr.sin_family = AF_INET;
m_cAddr.sin_port = htons (atoi (s_Port));
if (connect (m_cSock, (sockaddr *)&m_cAddr, sizeof (m_cAddr)))
{
AfxMessageBox ("can not connect");
return;
}
SetWindowText ("已经连接上");
但是windows的connect一直连不上linux
我后来分别写了linux的客户端和windos的服务器端进行测试,结果同样操作系统下面都是能连接成功的
但是如果是windows与linux连接就不行,这是为什么?
代码哪部分存在问题吗?
防火墙我已经关闭了的。 |
|