⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.cpp

📁 简单的udp发送程序
💻 CPP
字号:
// server.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "Winsock2.h"
#include "stdio.h"

int main(int argc, char* argv[])

{
	SOCKET socketid;
	struct sockaddr_in server;
	SOCKET msgsocket;
	struct sockaddr client;
	char buffer[1024];
	int rval;

	//进行协商
	WORD wVersionRequested;
	WSADATA wsaData;
	int err;
    //使要求的版本为1.1
	wVersionRequested=MAKEWORD(1,1);
	err=WSAStartup(wVersionRequested, &wsaData);

	if (err!=0)
	{
		//用户没有找到一个可以使用的DLL,返回
		perror("there is no DLL to use");
		return 0;
	}

	//确保Windows Sockets DLL支持1.1。
	if ( (LOBYTE(wsaData.wVersion)!=1) || (HIBYTE(wsaData.wVersion)!=1) )
	{
		perror("there is not right DLL");
		WSACleanup();
		return 1;
	}


	//建立Sockets
	socketid=socket(AF_INET,SOCK_STREAM,0);
	if (socketid==INVALID_SOCKET)
	{
		perror("there is error in opening sockets\n");
		return 2;
	}
	
	//使用端口号5050来命名服务器的Sockets
	server.sin_family=AF_INET;
	server.sin_port=htons(5050);
	server.sin_addr.S_un.S_un_b.s_b1=192;
	server.sin_addr.S_un.S_un_b.s_b2=168;
	server.sin_addr.S_un.S_un_b.s_b3=17;
	server.sin_addr.S_un.S_un_b.s_b4=204;

	if ( bind(socketid, (sockaddr *)&server,sizeof(server))<0)
	{
		perror("there is error in binding sockets\n");
		return 3;
	}
	
	//输出端口号
	int length=sizeof(server);
	if(getsockname(socketid,(struct sockaddr *)&server,&length)<0)
	{
		perror("there is error in getting name");
		return 4;
	}
	printf("socket port %d\n",ntohs(server.sin_port));

	//开始接收连接
	listen(socketid,5);
   
	//进入一个死循环
	int len=sizeof(struct sockaddr);
	do
	{
		msgsocket=accept(socketid,(struct sockaddr *)&client,(int*)&len);
		if (msgsocket==INVALID_SOCKET)
		{
			perror("there is error in open new sockets");
			break;
		}
		else 
		{
			memset(buffer,0,sizeof(buffer));
			if ( (rval=recv(msgsocket,buffer,1024,0))==-1 )
			{
				perror("there is error in recving");
				break;
			}
			if (rval==0)
				printf("ending connection");
			else
				printf("-->%s\n",buffer);
		}
		
		closesocket(msgsocket);
		
	}while(TRUE);

	closesocket(socketid);
	WSACleanup();
    return 100;

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -