没有合适的资源?快使用搜索试试~ 我知道了~
客户端/服务器模式的C代码实现及代码分析
资源推荐
资源详情
资源评论
/**********************************
server.c
服务器端的代码实现了:
1. 等待请求
2. 接受请求,建立连接
3. 获取客户端传输过来的信息
***********************************/
#include <netinet/in.h> // sockaddr_in的头文件
#include <sys/types.h> // socket的头文件
#include <sys/socket.h> // socket的头文件
#include <stdio.h> // printf的头文件
#include <stdlib.h> // exit的头文件
#include <string.h> // bzero的头文件
#define HELLO_WORLD_SERVER_PORT 6666 //服务端口号
#define LENGTH_OF_LISTEN_QUEUE 20 //监听队列长度
#define BUFFER_SIZE 1024 //缓存大小
#define FILE_NAME_MAX_SIZE 512 //文件名最大长度
int main(int argc, char **argv)
{
//设置一个socket地址结构server_addr,代表服务器internet地址, 端口
struct sockaddr_in server_addr;
bzero(&server_addr,sizeof(server_addr)); //把一段内存区的内容全部设置为0
server_addr.sin_family = AF_INET; //internet协议族
server_addr.sin_addr.s_addr = htons(INADDR_ANY); //INADDR_ANY表示自动获取本机地址,将主机字符顺序转换成网络字符顺序
server_addr.sin_port = htons(HELLO_WORLD_SERVER_PORT); //服务器端端口号转换成网络字符顺序
//创建用于internet的流协议(TCP)socket,用server_socket代表服务器socket
int server_socket = socket(PF_INET,SOCK_STREAM,0);
server.c
服务器端的代码实现了:
1. 等待请求
2. 接受请求,建立连接
3. 获取客户端传输过来的信息
***********************************/
#include <netinet/in.h> // sockaddr_in的头文件
#include <sys/types.h> // socket的头文件
#include <sys/socket.h> // socket的头文件
#include <stdio.h> // printf的头文件
#include <stdlib.h> // exit的头文件
#include <string.h> // bzero的头文件
#define HELLO_WORLD_SERVER_PORT 6666 //服务端口号
#define LENGTH_OF_LISTEN_QUEUE 20 //监听队列长度
#define BUFFER_SIZE 1024 //缓存大小
#define FILE_NAME_MAX_SIZE 512 //文件名最大长度
int main(int argc, char **argv)
{
//设置一个socket地址结构server_addr,代表服务器internet地址, 端口
struct sockaddr_in server_addr;
bzero(&server_addr,sizeof(server_addr)); //把一段内存区的内容全部设置为0
server_addr.sin_family = AF_INET; //internet协议族
server_addr.sin_addr.s_addr = htons(INADDR_ANY); //INADDR_ANY表示自动获取本机地址,将主机字符顺序转换成网络字符顺序
server_addr.sin_port = htons(HELLO_WORLD_SERVER_PORT); //服务器端端口号转换成网络字符顺序
//创建用于internet的流协议(TCP)socket,用server_socket代表服务器socket
int server_socket = socket(PF_INET,SOCK_STREAM,0);
if( server_socket < 0)
{
printf("Create Socket Failed!");
exit(1);
}
{
int opt =1;
setsockopt(server_socket,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));
}
//把socket和socket地址结构联系起来
if( bind(server_socket,(struct sockaddr*)&server_addr,sizeof(server_addr)))
{
printf("Server Bind Port : %d Failed!", HELLO_WORLD_SERVER_PORT); //服务器端口创建失败
exit(1);
}
//server_socket用于监听
if ( listen(server_socket, LENGTH_OF_LISTEN_QUEUE) )
{
printf("Server Listen Failed!"); //服务器监听失败
exit(1);
}
while (1) //服务器端要一直运行
{
//定义客户端的socket地址结构client_addr
struct sockaddr_in client_addr;
socklen_t length = sizeof(client_addr); //获取地址长度
/*****************************************************
{
printf("Create Socket Failed!");
exit(1);
}
{
int opt =1;
setsockopt(server_socket,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));
}
//把socket和socket地址结构联系起来
if( bind(server_socket,(struct sockaddr*)&server_addr,sizeof(server_addr)))
{
printf("Server Bind Port : %d Failed!", HELLO_WORLD_SERVER_PORT); //服务器端口创建失败
exit(1);
}
//server_socket用于监听
if ( listen(server_socket, LENGTH_OF_LISTEN_QUEUE) )
{
printf("Server Listen Failed!"); //服务器监听失败
exit(1);
}
while (1) //服务器端要一直运行
{
//定义客户端的socket地址结构client_addr
struct sockaddr_in client_addr;
socklen_t length = sizeof(client_addr); //获取地址长度
/*****************************************************
剩余20页未读,继续阅读
资源评论
FP_YY
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功