Linux网络编程——TCP连接实现服务端返回客户端发送的两数之和

Linux网络编程实验二

要求:

  • 服务端返回客户端发送的两个整数之和。
  • 服务器提供并发服务

建立TCP连接的基本步骤:

参考:https://blog.csdn.net/QQ1402369668/article/details/86090092

在这里插入图片描述
服务端:

  • 创建监听socket套接字,套接字就相当于用于通信的工具,比如要打电话给别人,首先得获得一个手机,在代码中体现为:
int listenSocket=socket(AF_INET,SOCK_STREAM,0);

//AF_INET    :表示IPv4域
//SOCK_STREAM:表示使用TCP协议
//0          :默认参数
openSUSE 用户手册中对socket()的描述:

在这里插入图片描述

  • 创建并初始化地址结构体,包括获得本机的IP地址和初始化指定的端口号
struct sockaddr_in addrSrc,addrClient;
    addrSrc.sin_family=AF_INET;
    addrSrc.sin_port=htons(6666);//服务端的监听端口
    addrSrc.sin_addr.s_addr=INADDR_ANY;//转换过来就是0.0.0.0,泛指本机的意思,也就是表示本机的所有IP
  • 绑定地址,监听端口
    //绑定
    bind(listenSocket,(struct sockaddr*)&addrSrc,sizeof(struct sockaddr_in)); 
   //监听
    listen(listenSocket,5);//5 表示最多允许和5个客户端建立TCP连接

此时服务端的监听套接字准备完毕,下一步是在该监听套接字上监听客户端的请求,在代码中体现为:在死循环中调用accept()函数,若监听到了一个客户端的连接请求,accept()函数便会返回一个新的套接字描述符,此后便用这个连接套接字与客户端进行通信。

由于要求使用并发处理,则在服务端监听到了一个请求后便会创建一个子进程与客户端通信,父进程专门用于监听TCP连接请求,子进程专门用于与客户端交互,比如进行计算等操作。

服务端完整代码:

#include<unistd.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<sys/ioctl.h>
#include<string.h>


int main()
{
   
    //创建一个socket
    int listenSocket=socket(AF_INET,SOCK_STREAM,0);
    
    pid_t childpid;
    
    //配置ip port 协议
    struct sockaddr_in addrSrc,addrClient;
    addrSrc.sin_family=AF_INET;
    addrSrc.sin_port=htons(6666);
    addrSrc.sin_addr.s_addr=INADDR_ANY;
 
    //绑定
    bind(listenSocket,(struct sockaddr*)&addrSrc,sizeof(struct sockaddr_in));
 
    //监听
    listen(listenSocket,5);
    
    
    int connfd=0;
    int len=sizeof(struct sockaddr_in);
    
    for
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
一、课程设计目的:1. 学会Java程序开发的环境搭建与配置,并在实际运用中学习和掌握Java程序开发的全过程。2. 进一步熟悉掌握Java程序设计语言的基础内容,如用户图形界面设计、Java多线程编程、Applet程序的设计、文件和网络输入输出流编程、Java数据库编程等。3. 通过亲自动手写程序,一方面拓展知识面,一方面锻炼调试能力。二、 课程设计总体要求:1. 问题的描述与程序将要实现的具体功能。2. 程序功能实现的具体设计思路或框架,并检查流程设计。3. 代码实现。4. 程序测试(如程序代码、功能测试、可靠性测试和效率测试等)。5. 设计小结(包括)三、 课程设计题目:1. 选做部分1) 利用Socket编程制作一个简单的C/S应用。其中,Client端为GUI程序,用于提供界面输入个数,并有1个“发送”按钮,另外还有一个 TextField用于显示传来的计算结果;Server端用于监听连接请求、计算发送过来的数的和、送回数据结果。2) 编一个多线程Applet,实现简单的动画。具体要求:自动出现由小到大变换的圆,位置与颜色随机,变到150直径时擦除,重新再出现圆;变换速度有HTML文件传入的参数控制(控制sleep时间)。3) 编写Applet,包含个按钮,一个按钮用于放大Applet上的一串字符串,一个按钮用于缩小;连续点击可不断放大或缩小。4) 设计GUI界面的计算器程序,用户可以通过鼠标依次输入参加计算的数值,进行加、减、乘、除混合运算。5) 编写生产者/消费者问题的应用程序。生产者以0~200ms的速度随机产生30个小写字母,消费者以0~2s的速度取出字母,并显示在屏幕上。2. 必做部分 根据自己的兴趣,结合实际情况,选取合适题目,利用所学JAVA知识开发一个小型的应用软件。要求:1) 阐述清楚应用程序实现的具体功能和设计思路。2) 所选课题难度不应太简单。3) 所有人的题目及设计不得类同。四、 课程设计报告内容:1) 目录2) 设计题目及具体要求 3) 总体设计思路(简要说明系统包含的java源程序及其功能,描述类之间的主要关系)4) 具体设计(以表格形式描述各个类含有的成员变量和方法,并对关键代码加以说明,显示程序运行界面)5) 总结(包括对本课程的建议)6) 参考资料。。。。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值