利用accept函数来处理客户端请求的连接
2014-06-12 12:55
288 查看
#include<sys/socket.h>
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<memory.h>
#include<sys/mman.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#define PORT 1234
#define MAX_QUE 5
int main()
{
struct sockaddr_in local_sockaddr,client_sockaddr;
int size;//客户端地址大小
int socketfd;//本地socket套接字描述符
int clientfd;//客户端链接描述符
if((socketfd=socket(AF_INET,SOCK_STREAM,0))<0)//建立socket连接
{
perror("socket");
exit(1);
}
printf("Socket id = %d\n",socketfd);
local_sockaddr.sin_family = AF_INET;
local_sockaddr.sin_port = htons(PORT);
local_sockaddr.sin_addr.s_addr = htonl(INADDR_ANY);
printf("server ip =%s\n",inet_ntoa(local_sockaddr.sin_addr));//输出服务器ip地址
memset(local_sockaddr.sin_zero,0,8);
int i;
setsockopt(socketfd,SOL_SOCKET,SO_REUSEADDR,&i,sizeof(i));//允许重复使用本地的地址与套接字进行绑定
if(bind(socketfd,(struct sockaddr *)&local_sockaddr,sizeof(struct sockaddr))<0)//绑定函数bind()
{
perror("bind");
exit(1);
}
printf("Bind success!\n");
if(listen(socketfd,MAX_QUE)<0)//利用listen()设置被动监听
{
perror("listen");
exit(1);
}
printf("Listening>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
if((clientfd=accept(socketfd,(struct sockaddr*)&client_sockaddr,&size))<0)//调用accept()函数,等待客户端的链接
{
perror("accept");
exit(1);
}
printf("connect client success\n");
printf("client ip = %s\n",inet_ntoa(client_sockaddr.sin_addr));//返回客户端ip地址
printf("client port = %d\n",client_sockaddr.sin_port);//返回客户端端口号
close(socketfd);//关闭socket连接
}
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<memory.h>
#include<sys/mman.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#define PORT 1234
#define MAX_QUE 5
int main()
{
struct sockaddr_in local_sockaddr,client_sockaddr;
int size;//客户端地址大小
int socketfd;//本地socket套接字描述符
int clientfd;//客户端链接描述符
if((socketfd=socket(AF_INET,SOCK_STREAM,0))<0)//建立socket连接
{
perror("socket");
exit(1);
}
printf("Socket id = %d\n",socketfd);
local_sockaddr.sin_family = AF_INET;
local_sockaddr.sin_port = htons(PORT);
local_sockaddr.sin_addr.s_addr = htonl(INADDR_ANY);
printf("server ip =%s\n",inet_ntoa(local_sockaddr.sin_addr));//输出服务器ip地址
memset(local_sockaddr.sin_zero,0,8);
int i;
setsockopt(socketfd,SOL_SOCKET,SO_REUSEADDR,&i,sizeof(i));//允许重复使用本地的地址与套接字进行绑定
if(bind(socketfd,(struct sockaddr *)&local_sockaddr,sizeof(struct sockaddr))<0)//绑定函数bind()
{
perror("bind");
exit(1);
}
printf("Bind success!\n");
if(listen(socketfd,MAX_QUE)<0)//利用listen()设置被动监听
{
perror("listen");
exit(1);
}
printf("Listening>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");
if((clientfd=accept(socketfd,(struct sockaddr*)&client_sockaddr,&size))<0)//调用accept()函数,等待客户端的链接
{
perror("accept");
exit(1);
}
printf("connect client success\n");
printf("client ip = %s\n",inet_ntoa(client_sockaddr.sin_addr));//返回客户端ip地址
printf("client port = %d\n",client_sockaddr.sin_port);//返回客户端端口号
close(socketfd);//关闭socket连接
}
相关文章推荐
- 准多线程TCP服务器,处理客户端连接请求。
- Enter-PSSession : 连接到远程服务器失败,错误消息如下: WinRM 客户端无法处理该请求
- 利用Instant Client ,不安装oracle客户端使用sqlplus连接远程数据库的步骤
- 客户端与服务器端TCP连接,关闭连接时应作的处理
- Socket 编程经验谈---如何处理socket连接后服务器端或客户端的断开
- JSP5-使用JSP处理客户端请求
- 浅析Servle类及其处理客户端请求
- 完成客户端请求处理D/---ServerThread
- 连接的用户过多 导致此错误的原因是:Web 服务器忙,因通信量过大而无法处理您的请求。
- 使用Jsp处理客户端请求
- 如何处理客户端连接数据库?
- C# 连接Oracle(利用ODP.net,不安装oracle客户端)
- 利用Flash作为桥梁连接WEB页面和服务器端Socket通信,达到服务器主动"推"客户端的效果
- 课程 Java Web程序设计02: 处理客户端请求: 表单数据
- ExtJS之ASP.NET服务器端实现ashx和asmx处理客户端请求
- 如何处理socket连接后服务器端或客户端的断开
- 封装好的客户端请求xmlhttp处理
- Linux网络编程一步一步学-接受客户端连接请求
- 客户端不能连接网络的处理经过(MxrSmb/RDR错误,WorkStaion服务无法启动)
- java利用线程池实现处理socket请求的小例子