nodejs Net模块之socket建立连接
遇到个奇葩问题,仍是没搞明白,看有没有能人帮忙解答下。。。。
环境:WIN7 +NODEJS 8.9
用NET模块创建了一个SOCKET,然后去连接本机的服务器,服务器端口32347,但是没有开启这个服务器。 客户端SOCKET会每隔5秒连接一次服务器,当然,由于服务器没开,肯定连接失败。
但是。。。。经过1天多之后,却发现连接成功了。 然后再CMD下查看网络如下:
c:\users\admin>netstat -nao |findstr 32347
TCP 192.168.3.78:32347 192.168.3.78:32347 ESTABLISHED 10364
这是自己和自己建立成功了呀 另外用C语言模拟了这种情况
#include<stdio.h>
#include<strings.h>
#include<unistd.h>
#include<arpa/inet.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#define PORT 1234
#define BACKLOG 1
#define MAXDATASIZE 100
int main()
{
int listenfd,connectfd;
struct sockaddr_in server;
struct sockaddr_in client;
int sin_size;
char buf[MAXDATASIZE];
if((listenfd=(socket(AF_INET,SOCK_STREAM,0)))==-1)
{
//handle exception
perror("Creating socket failed");
exit(1);
}
bzero(&server,sizeof(server));
server.sin_family=AF_INET;
server.sin_port=htons(PORT);
server.sin_addr.s_addr=htonl(INADDR_ANY);
/*Bind socket to address*/
if(bind(listenfd,(struct sockaddr *)&server,sizeof(struct sockaddr))==-1)
{
perror("Bind error");
exit(1);
}
if(connect(listenfd,(struct sockaddr *)&server,sizeof(struct sockaddr))==-1)
{
printf("connect() error\n");
exit(1);
} else{
printf("connect success.");
}
send(listenfd,"Welcome to my server.\n",22,0);
int numbytes = 0;
if((numbytes=recv(listenfd,buf,MAXDATASIZE,0))==-1)
{
printf("recv() error");
exit(1);
}
buf[numbytes]='\0';
printf("Server Message: %s\n",buf);
}
编译执行后
root[@iZ](/user/iZ):/home/c# gcc ser.c
root[@iZ](/user/iZ):/home/c# ./a.out
connect success.Server Message: Welcome to my server.
root[@iZ](/user/iZ):/home/c#