user-0 提问: C语言关于socket编程的问题，菜鸟求助

回复:
user: user-1
content: 你这是Linux下的代码，windows下只要 #include "winsock2.h" 然后引入 ws2_32.lib，用WSAStartup函数初始化一下就行了

user: user-0
content: 引用 27 楼 Luisfan 的回复:你这个是linux上的吧,求改成windows的

user: user-2
content: 你这个是linux上的吧,

user: user-3
content: 我绑定的端口改为9999 附上运行结果:

user: user-3
content: 代码比较粗糙，将就着看吧~~ 呃~~不好意思，这个是基于TCP的 #include <string> #include <stdio.h> #include <stdlib.h> #include <iostream> #include <WinSock2.h> using namespace std;  #pragma comment(lib,"Ws2_32.lib")  #define PORT 9999 /*使用的port */  int main(int argc, char* argv[]) { 	WORD wVersionRequested = MAKEWORD(2,2);  	WSADATA ws = {0x00}; 	WSAStartup(wVersionRequested,&ws); 	SOCKET nSock = socket(AF_INET,SOCK_STREAM,0); //TCP 	if (nSock<0) 	{ 		perror(argv[0]); 		system("pause"); 		WSACleanup(); 		return -1; 	} 	printf("socket success!\n");  	struct sockaddr_in addr = {0x00}; 	size_t nLen = sizeof(addr); 	addr.sin_family = AF_INET; 	addr.sin_addr.s_addr = htonl(INADDR_ANY); 	addr.sin_port = htons(PORT);  	if(SOCKET_ERROR == bind(nSock,(LPSOCKADDR)&addr,nLen)) //绑定 	{ 		printf("Bind Error!ErrorNo[%d]\n",WSAGetLastError()); 		closesocket(nSock); 		system("pause"); 		WSACleanup(); 		return -1; 	}  	printf("Bind Success!\n");  	if(SOCKET_ERROR == listen(nSock,1)) //监听 	{ 		printf("Listen Error!ErrorNo[%d]\n",WSAGetLastError()); 		closesocket(nSock); 		system("pause"); 		WSACleanup(); 		return -1; 	} 	printf("Listen Soccess!\n"); 	 	while(true) 	{ 		SOCKADDR_IN inSaddr = {0x00}; 		int ninSaddr = sizeof(inSaddr); 		SOCKET sAccept = accept(nSock,(sockaddr*)&inSaddr,&ninSaddr); //接收 		if (sAccept<0) 		{ 			printf("accept Error!ErrorNo[%d]\n",WSAGetLastError()); 			closesocket(nSock); 			system("pause"); 			WSACleanup(); 			return -1; 		}  		printf("Accept success!\n");  		char szBuffer[256] = {0x00}; 		int nRecv = recv(sAccept,szBuffer,sizeof(szBuffer),0);//读取 		if (nRecv > 0) 		{ 			printf("接收消息[%s]\n",szBuffer); 		} 		else if (0 == nRecv) 		{ 			printf("未接收到消息!\n"); 		} 		else 		{ 			printf("读取失败!\n"); 			closesocket(nSock); 			system("pause"); 			WSACleanup(); 			return -1; 		}   	}  	closesocket(nSock); 	system("pause"); 	WSACleanup();  	return 0; }

user: user-4
content: 这个是linux下的网络编程的源码吧，基于UDP协议的服务器端的源码

user: user-3
content: 大婶。。。

user: user-5
content: 建议静下心来学习，最基本的东西都到论坛上来问，可见人心浮躁！

user: user-0
content: 求各位大婶把这个改成windows版的，谢谢了

user: user-6
content: 头文件包含有误，无法链接过去

user: user-0
content: 引用 18 楼 ak47_wz 的回复:。。。首先有一两个小错误。    bezro(buffer, sizeof(buffer));         len = recvfrom(socket, buffer, sizeof(buffer), 0, &addr &addr_len);   这里的bezro打错了，应该是bzero（置0）才是。 另外，第二句少了个分号。   这是linux上面网络编程的源码。这是一个基于UDP协议的服务端程序。能帮我改成windows版的吗？

user: user-7
content: 。。。首先有一两个小错误。    bezro(buffer, sizeof(buffer));         len = recvfrom(socket, buffer, sizeof(buffer), 0, &addr &addr_len);   这里的bezro打错了，应该是bzero（置0）才是。 另外，第二句少了个分号。   这是linux上面网络编程的源码。这是一个基于UDP协议的服务端程序。

user: user-0
content: 引用 16 楼 AnYidan 的回复:Windows网络编程  带源码好吧，其实希望你直接解决就哈

user: user-8
content: Windows网络编程  带源码

user: user-9
content: len = recvfrom(socket, buffer, sizeof(buffer), 0, &addr &addr_len);

user: user-0
content: 引用 13 楼 max_min_ 的回复:[quote=引用 8 楼 A38017032 的回复:] [quote=引用 7 楼 ganpengjin1 的回复:] #include <WinSock2.h> #pragma comment(lib, "ws2_32.lib")难道这个代码还有问题吗？还是错误，可以详细点吗？谢谢了[/quote] 代码没有错误！可能是别人在linux下的源码！windows不兼容，需要修改部分错误！ 先注释掉掉types.h，然后根据报错提示，查找相关申明的windows下对应的头文件！[/quote]好像代码有很多问题的，有的地方少了括号之类的都有

user: user-10
content: 引用 8 楼 A38017032 的回复:[quote=引用 7 楼 ganpengjin1 的回复:] #include <WinSock2.h> #pragma comment(lib, "ws2_32.lib")难道这个代码还有问题吗？还是错误，可以详细点吗？谢谢了[/quote] 代码没有错误！可能是别人在linux下的源码！windows不兼容，需要修改部分错误！ 先注释掉掉types.h，然后根据报错提示，查找相关申明的windows下对应的头文件！

user: user-0
content: 引用 11 楼 ganpengjin1 的回复:http://wdtxslqnn.blog.163.com/blog/static/44246485201232882939450/  你自己参考吧！  哎...哎，好吧，还是谢谢了

user: user-11
content: http://wdtxslqnn.blog.163.com/blog/static/44246485201232882939450/  你自己参考吧！  哎...

user: user-0
content: 引用 9 楼 ganpengjin1 的回复:你这是哪里抄来的程序，很多定义都没有，比如： addr_len.. 哎....http://see.xidian.edu.cn/cpp/html/372.html在这个网站看的，求助了