0
点赞
收藏
分享

微信扫一扫

socket编程(3)

一、实现小写字母转为大写字母(server端)

1.设计思路

  • socket() 首先创建套接字
  • 初始化服务器地址结构
  • bind() 绑定IP地址和端口号
  • listen() 设置最大同时发起连接数
  • accept() 阻塞等待客户端发起连接
  • read() 读取客户端发送的数据
  • toupper() 处理客户端发送的数据,实现将小写字母转换为大写字母
  • write() 回写给客户端
  • close() 关闭

2.代码实现

#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <stdlib.h>
#include <ctype.h>
#include <arpa/inet.h>
#include <unistd.h>

#define SERV_PORT 8000

void err(const char *str)
{
perror(str);
exit(1);
}

int main()
{
int sfd=0;
int cfd=0;
char buf[BUFSIZ];
int ret;
int i;
struct sockaddr_in serv_addr,cli_addr;
socklen_t cli_addr_len;
serv_addr.sin_family=AF_INET;
serv_addr.sin_port=htons(SERV_PORT);
serv_addr.sin_addr.s_addr=htonl(INADDR_ANY);
//初始化服务器地址结构
sfd=socket(AF_INET,SOCK_STREAM,0);
//创建一个socket,指定IPv4协议族
if(sfd==-1)
{
err("socket error");
}
bind(sfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr));
//绑定服务器的地址结构
listen(sfd,128);
//设置监听上限,此处不阻塞等待
cli_addr_len=sizeof(cli_addr);
//获取客户端地址结构的大小
cfd=accept(sfd,(struct sockaddr *)&cli_addr,&cli_addr_len);
//此处会阻塞等待客户端的连接
if(cfd==-1)
{
err("accept error");
}
ret=read(cfd,buf,sizeof(buf));
//读取客户端发送的数据
write(STDOUT_FILENO,buf,ret);
for(i=0;i<ret;i++)
buf[i]=toupper(buf[i]);
//处理客户端发送的数据
write(cfd,buf,ret);
//处理完毕后回写给客户端
close(sfd);
close(cfd);
return 0;
}

3.结果显示

       由于只完成了server端,所以客户端使用nc工具测试。nc是netcat的简称,是一个功能强大的网络工具,可以作为client发起TCP连接。

socket编程(3)_服务器端

socket编程(3)_socket编程_02

socket编程(3)_服务器端_03

举报

相关推荐

0 条评论