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

📄 informlinuxserver.cpp

📁 linux聊天程序试试看毕业设计 没什么写的了
💻 CPP
字号:
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/stat.h>
#include <unistd.h>


#define  SERVER_PORT   8888
 
extern int errno ;


struct student
{
	char name[32];
	int  age;
};

int main ()
{
	int sockfd, comfd;
	struct sockaddr_in serverAddr, clientAddr;
	int ret, iClientSize;
	struct student stu;
	void *ptr;

    if((sockfd=socket(AF_INET, SOCK_STREAM, 0))==-1)
	{
		printf (" socket() failed! code:%d\n",errno);
		return -1;
	}


////�������ص�ַ��Ϣ
	serverAddr.sin_family= AF_INET;
	serverAddr.sin_port=htons(SERVER_PORT);
	serverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
	bzero(&(serverAddr.sin_zero),8);
	if(bind(sockfd,(struct sockaddr*)&serverAddr,sizeof(serverAddr))==-1)
	{
		printf("bind() failed! code:&d\n",errno);
		close(sockfd);
		return -1;
	}

	if( listen(sockfd,5) ==-1)
	{
		printf("listen() failed! code:&d\n",errno);
		close(sockfd);
		return -1;
	}
	printf("waiting for client connecting!\n");
        printf("tips : ctrl+c to quit!\n");


    iClientSize = sizeof(struct sockaddr_in);
	if((comfd=accept(sockfd,(struct sockaddr*)&clientAddr,(socklen_t*)&iClientSize))==-1)
	{
		printf("accept() failed! code:&d\n",errno);
		close(sockfd);
		return -1;
	}
    
    printf("Accepted client: %s:%d\n",
		inet_ntoa(clientAddr.sin_addr), ntohs(clientAddr.sin_port));


	int nLeft=sizeof(stu);
	ptr=&stu;
	while (nLeft >0)
	{
		ret=recv(comfd,ptr,nLeft,0);
		if(ret<=0)
		{
			printf("recv() failed!\n");
			close(sockfd);
			close(comfd);
			return -1;
		}
		nLeft-=ret;
		ptr=(char *)ptr+ret;
	}

    printf("name: %s\nage:%d\n", stu.name, stu.age);
	close(sockfd);
	close(comfd);
	return 0;
}





















⌨️ 快捷键说明

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