L
lncd
Unregistered / Unconfirmed
GUEST, unregistred user!
我准备建一个socket连接,
但在Server端listen后,程序并不停下来,而是直接往后跑了。
这样Server端一下就结束了,客户端没法联呀。
我又试了在Server端不停地accept,但还是连不上。
代码如下:
//服务器端。
#include "stdafx.h"
#include "winsock2.h"
void main(int argc, char* argv[])
{
WSADATA wsaData;
SOCKET ListeningSocket;
SOCKET NewConnection;
SOCKADDR_IN ServerAddr;
SOCKADDR_IN ClientAddr;
int ClientAddrLen=sizeof(SOCKADDR_IN);;
int port=5150;
//初始化socket
WSAStartup(MAKEWORD(2,2),&wsaData);
//创建一个新的套接字监听客户机连接
ListeningSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
ServerAddr.sin_family=AF_INET;
ServerAddr.sin_port=htons(port);
ServerAddr.sin_addr.s_addr=inet_addr("192.168.0.33");
bind(ListeningSocket,(SOCKADDR *)&ServerAddr,
sizeof(ServerAddr));
listen(ListeningSocket,5);
printf("正在监听.../n");
do
{
NewConnection=accept(ListeningSocket,
(SOCKADDR *)&ClientAddr,&ClientAddrLen);
}
while (NewConnection==INVALID_SOCKET);
printf("建立了一个连接/n");
closesocket(NewConnection);
closesocket(ListeningSocket);
WSACleanup();
}
//客户端
#include "stdafx.h"
#include "winsock2.h"
void main(int argc, char* argv[])
{
WSADATA wsaData;
SOCKET s;
SOCKADDR_IN ServerAddr;
int NewConnect;
int Port=5150;
//初始化socket
WSAStartup(MAKEWORD(2,2),&wsaData);
s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
ServerAddr.sin_family=AF_INET;
ServerAddr.sin_port=htons(Port);
ServerAddr.sin_addr.s_addr=inet_addr("192.168.0.33");
printf("试图连接服务器.../n");
NewConnect=connect(s,(SOCKADDR *)&ServerAddr,sizeof(ServerAddr));
if (NewConnect=SOCKET_ERROR)
{
printf("连接失败/n");
return;
}
else
printf("连接成功/n");
closesocket(s);
printf("关闭了一个连接/n");
WSACleanup();
printf("清除/n");
}
//运行结果,服务器端说连接成功,客户端说连接失败,我晕!!!
服务器端:
正在监听...
建立了一个连接
客户端:
试图连接服务器。。。
连接失败
关闭了一个连接
清除
但在Server端listen后,程序并不停下来,而是直接往后跑了。
这样Server端一下就结束了,客户端没法联呀。
我又试了在Server端不停地accept,但还是连不上。
代码如下:
//服务器端。
#include "stdafx.h"
#include "winsock2.h"
void main(int argc, char* argv[])
{
WSADATA wsaData;
SOCKET ListeningSocket;
SOCKET NewConnection;
SOCKADDR_IN ServerAddr;
SOCKADDR_IN ClientAddr;
int ClientAddrLen=sizeof(SOCKADDR_IN);;
int port=5150;
//初始化socket
WSAStartup(MAKEWORD(2,2),&wsaData);
//创建一个新的套接字监听客户机连接
ListeningSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
ServerAddr.sin_family=AF_INET;
ServerAddr.sin_port=htons(port);
ServerAddr.sin_addr.s_addr=inet_addr("192.168.0.33");
bind(ListeningSocket,(SOCKADDR *)&ServerAddr,
sizeof(ServerAddr));
listen(ListeningSocket,5);
printf("正在监听.../n");
do
{
NewConnection=accept(ListeningSocket,
(SOCKADDR *)&ClientAddr,&ClientAddrLen);
}
while (NewConnection==INVALID_SOCKET);
printf("建立了一个连接/n");
closesocket(NewConnection);
closesocket(ListeningSocket);
WSACleanup();
}
//客户端
#include "stdafx.h"
#include "winsock2.h"
void main(int argc, char* argv[])
{
WSADATA wsaData;
SOCKET s;
SOCKADDR_IN ServerAddr;
int NewConnect;
int Port=5150;
//初始化socket
WSAStartup(MAKEWORD(2,2),&wsaData);
s=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
ServerAddr.sin_family=AF_INET;
ServerAddr.sin_port=htons(Port);
ServerAddr.sin_addr.s_addr=inet_addr("192.168.0.33");
printf("试图连接服务器.../n");
NewConnect=connect(s,(SOCKADDR *)&ServerAddr,sizeof(ServerAddr));
if (NewConnect=SOCKET_ERROR)
{
printf("连接失败/n");
return;
}
else
printf("连接成功/n");
closesocket(s);
printf("关闭了一个连接/n");
WSACleanup();
printf("清除/n");
}
//运行结果,服务器端说连接成功,客户端说连接失败,我晕!!!
服务器端:
正在监听...
建立了一个连接
客户端:
试图连接服务器。。。
连接失败
关闭了一个连接
清除