-
-
[旧帖]
[求助]初写WinSock程序出现死循环
0.00雪花
-
发表于:
2013-1-2 20:02
1522
-
[旧帖] [求助]初写WinSock程序出现死循环
0.00雪花
近日为了实现局域网里的一种方法,使用了WinSock,但是写完了,While一直死循环返回本机IP地址,检查了N遍代码,还是搞不定,所以发上来忘大牛帮忙看看。目前我正在看雪文库翻看资料。
这是服务端的程序源码:
#include <stdio.h>
#include <Winsock2.h>
#pragma comment (lib,"ws2_32.lib")
void main()
{
WSADATA wsaData;
int iResult=WSAStartup(MAKEWORD(2,2),&wsaData);
if(iResult=NO_ERROR)
printf("Error at WSAStartup()/n");
SOCKET server;
server=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(server==INVALID_SOCKET)
{
printf( "Error at socket(): %ld/n", WSAGetLastError() );
WSACleanup();
}
sockaddr_in service;
service.sin_family = AF_INET;
service.sin_addr.s_addr = inet_addr( "127.0.0.1" );
service.sin_port = htons(6000);
if(bind(server,(SOCKADDR*)&server,sizeof(server))==SOCKET_ERROR)
{
printf("bind() failed./n" );
closesocket(server);
}
listen(server,SOMAXCONN);
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
while(true)
{
SOCKET sockConn=accept(server,(SOCKADDR*)&addrClient,&len);
char recvBuf[100];
printf(inet_ntoa(addrClient.sin_addr));
recv(server,recvBuf,100,0);
//printf("%s/n",recvBuf);
closesocket(server);
}
}
下面是客户端的代码:
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "ws2_32.lib")
void main()
{
WSADATA wsaData;
int iResult=WSAStartup(MAKEWORD(2,2),&wsaData);
if(iResult!=NO_ERROR)
printf("Error at WSAStartup()/n");
SOCKET client;
client=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(client==INVALID_SOCKET)
{
printf("Error at socket(): %ld/n", WSAGetLastError() );
WSACleanup();
}
sockaddr_in clientService;
clientService.sin_addr.s_addr = inet_addr( "127.0.0.1" );
clientService.sin_family=AF_INET;
clientService.sin_port=htons(8000);
if(connect(client,(SOCKADDR*)&clientService,sizeof(clientService))==SOCKET_ERROR)
{
printf( "Failed to connect./n" );
WSACleanup();
}
send(client,"I live!",strlen("I live!"),0);
printf("send..");
closesocket(client);
WSACleanup();
}
后令谢谢各位高人解答。
[课程]Android-CTF解题方法汇总!