首页
社区
课程
招聘
[旧帖] [求助]初写WinSock程序出现死循环 0.00雪花
发表于: 2013-1-2 20:02 1521

[旧帖] [求助]初写WinSock程序出现死循环 0.00雪花

2013-1-2 20:02
1521
近日为了实现局域网里的一种方法,使用了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();
}


后令谢谢各位高人解答。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 3343
活跃值: (1243)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
2
哎 没人帮忙 我自己靠KSSD 慢慢摸索吧 找到原文了 可是 谁知道怎么结贴啊?
2013-1-4 13:03
0
雪    币: 142
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
accept是个阻塞函数,要是一直反复执行,说明此函数已经返回了.
用GetLastError看看错误号吧.
怀疑是没绑定成功
2013-1-4 13:47
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
错误的代码是
服务器端 closesocket(server) 不应该是关闭服务器的套接字,应该关闭客户端的套接字...
2013-1-4 16:29
0
雪    币: 3343
活跃值: (1243)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
谢谢! 我看看
2013-1-4 18:25
0
雪    币: 39
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
服务端的recv也不要用server的socket啊
2013-1-6 18:08
0
雪    币: 103
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
简单看了下问题真多,closesocket前也没shutdown
2013-1-7 20:14
0
雪    币: 3343
活跃值: (1243)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
8
shutdown ?有这个命令吗?
2013-1-11 21:48
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
你的问题好多,(1)服务器端客户端通信端口不一致;(2)客户端也要用到while循环;(3)文章你参考一下http://liuviphui.blog.163.com/blog/static/20227308420130792242669/
2013-1-15 16:14
0
游客
登录 | 注册 方可回帖
返回
//