📄 informlinuxserver.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 + -