Linux 服务端大并发-初步
来源:互联网 发布:淘宝服装照片拍摄方法 编辑:程序博客网 时间:2024/05/21 07:47
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main(int argc, char *argv[])
{
int server_sockfd;//服务器端套接字
int client_sockfd;//客户端套接字
int len;
struct sockaddr_in my_addr; //服务器网络地址结构体
struct sockaddr_in remote_addr; //客户端网络地址结构体
// memset(&my_addr,0,sizeof(my_addr)); //数据初始化--清零
my_addr.sin_family=AF_INET; //设置为IP通信
my_addr.sin_addr.s_addr=INADDR_ANY;//服务器IP地址--允许连接到所有本地地址上
my_addr.sin_port=htons(listPort); //服务器端口号
printf("\n======|| Welcome to my service || Listen Port: %d ===========\n",listPort); //Initial prrintf world....
/*创建服务器端套接字--IPv4协议,面向连接通信,TCP协议*/
if((server_sockfd=socket(PF_INET,SOCK_STREAM,0))<0)
{
perror("socket");
return 1;
}
/*将套接字绑定到服务器的网络地址上*/
if (bind(server_sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))<0)
{
perror("bind");
return 1;
}
/*监听连接请求--监听队列长度为5*/
listen(server_sockfd,5);
sin_size=sizeof(struct sockaddr_in);
/*等待客户端连接请求到达*/
if((client_sockfd=accept(server_sockfd,(struct sockaddr *)&remote_addr,&sin_size))<0)
{
perror("accept");
return 1;
}
printf("accept client %s\n",inet_ntoa(remote_addr.sin_addr));
char *welcomeWorld=">Welcome to my server<";
len=send(client_sockfd,welcomeWorld,strlen(welcomeWorld),0);//发送欢迎信息
/*接收客户端的数据并将其发送给客户端--recv返回接收到的字节数,send返回发送的字节数*/
while(len>0)
{
len=recv(client_sockfd,buf,BUFSIZ,0);
if(len<=0){
printf("\n====client is quit=====\n");
break;
}
buf[len]=0;
printf("Recv[%d]:%s \n",len,buf);
if(send(client_sockfd,buf,len,0)<0)
{
perror("write");
return 1;
}
}
close(client_sockfd);
close(server_sockfd);
printf("\n======Server is quit========\n");
return 0;
}
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main(int argc, char *argv[])
{
int server_sockfd;//服务器端套接字
int client_sockfd;//客户端套接字
int len;
struct sockaddr_in my_addr; //服务器网络地址结构体
struct sockaddr_in remote_addr; //客户端网络地址结构体
int sin_size;
int listPort=8000;
char buf[BUFSIZ]={0}; //数据传送的缓冲区// memset(&my_addr,0,sizeof(my_addr)); //数据初始化--清零
my_addr.sin_family=AF_INET; //设置为IP通信
my_addr.sin_addr.s_addr=INADDR_ANY;//服务器IP地址--允许连接到所有本地地址上
my_addr.sin_port=htons(listPort); //服务器端口号
printf("\n======|| Welcome to my service || Listen Port: %d ===========\n",listPort); //Initial prrintf world....
/*创建服务器端套接字--IPv4协议,面向连接通信,TCP协议*/
if((server_sockfd=socket(PF_INET,SOCK_STREAM,0))<0)
{
perror("socket");
return 1;
}
/*将套接字绑定到服务器的网络地址上*/
if (bind(server_sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))<0)
{
perror("bind");
return 1;
}
/*监听连接请求--监听队列长度为5*/
listen(server_sockfd,5);
sin_size=sizeof(struct sockaddr_in);
/*等待客户端连接请求到达*/
if((client_sockfd=accept(server_sockfd,(struct sockaddr *)&remote_addr,&sin_size))<0)
{
perror("accept");
return 1;
}
printf("accept client %s\n",inet_ntoa(remote_addr.sin_addr));
char *welcomeWorld=">Welcome to my server<";
len=send(client_sockfd,welcomeWorld,strlen(welcomeWorld),0);//发送欢迎信息
/*接收客户端的数据并将其发送给客户端--recv返回接收到的字节数,send返回发送的字节数*/
while(len>0)
{
len=recv(client_sockfd,buf,BUFSIZ,0);
if(len<=0){
printf("\n====client is quit=====\n");
break;
}
buf[len]=0;
printf("Recv[%d]:%s \n",len,buf);
if(send(client_sockfd,buf,len,0)<0)
{
perror("write");
return 1;
}
}
close(client_sockfd);
close(server_sockfd);
printf("\n======Server is quit========\n");
return 0;
}
阅读全文
0 0
- Linux 服务端大并发-初步
- 大牛初步之ORACLE服务端与客户端
- 服务端-并发
- 搭建一个后台服务器--服务端(异步,大并发)
- 搭建一个后台服务器--服务端代码(异步,大并发)
- 搭建一个后台服务器--服务端(异步,大并发)
- 搭建一个后台服务器--服务端代码(异步,大并发)
- 搭建一个后台服务器--服务端(异步,大并发)
- 处理大并发之三 对libevent的初步认识
- 处理大并发之三 对libevent的初步认识
- 处理大并发之三 对libevent的初步认识
- 处理大并发之 对libevent的初步认识
- 处理大并发之 对libevent的初步认识
- 处理大并发之 对libevent的初步认识
- 处理大并发之三 对libevent的初步认识
- 处理大并发之二 对libevent的初步认识
- 处理大并发之三 对libevent的初步认识
- linux网络编程学习笔记之四 -----多线程并发服务端
- 正则浅学
- 详解HTTPS加速原理
- Android中ImageView的点击变暗效果
- 日常笔记之makefile中的ifeq ifdef
- C语言问题,在位运算中,操作数每右移一位,其结果相当于什么?若左移1位,其结果相当于什么?
- Linux 服务端大并发-初步
- vi命令显示行号
- python设计模式之命名模式
- Spring注解@Resource和@Autowired区别对比
- C-sizeof 关键字的应用
- 关于anaconda下pip安装步骤
- 学生信息管理系统错误集(三)
- java多线程
- 运算符中,优先级高低总结。