1.需求

①客户从标准输入读入一行文字,并写给了服务器
②服务器从网络输入中读取了这个文本,并回射给客户
③客户从网络输入中读取这个回射文本,并显示在标准输出上

2.server端代码

void dosth(int fd)
{char szBuf[1024];while(read(fd, szBuf, 1024) > 0){write(fd, szBuf, sizeof(szBuf));}
}int main()
{int sd, connsd;pid_t pid;struct sockaddr_in laddr, raddr;int size;char szBuf[1024];//使用IPV4中的TCP的流式套接字sd = socket(AF_INET, SOCK_STREAM, 0);if(sd < 0){perror("socket");exit(1);}//指定地址 协议 端口laddr.sin_family = AF_INET;laddr.sin_port = htons(1999);inet_pton(AF_INET, "0.0.0.0", &laddr.sin_addr);//进行绑定if(bind(sd, (void *)&laddr, sizeof(laddr)) < 0){perror("bind");exit(1);}//进行监听listen(sd, 100);size = sizeof(raddr);while(1){//等待连接请求connsd = accept(sd, (void*)&raddr, &size);inet_ntop(AF_INET, &raddr.sin_addr, szBuf, 1024);//创建子进程pid = fork();if(pid < 0){perror("fork");exit(1);}//子进程 读取并且输出ip和端口号if(0 == pid){fprintf(stdout, "[%s]:[%d] \n", szBuf, ntohs(raddr.sin_port));close(sd);dosth(connsd);close(connsd);exit(0);}close(connsd);}exit(0);
}

3.客户端代码

int main(int argc, char *argv[])
{int sd;struct sockaddr_in raddr;char buf[1024];char rcvbuf[1024];if(argc < 2){fprintf(stderr, "Usage....\n");exit(1);}sd = socket(AF_INET, SOCK_STREAM, 0);if(sd < 0){perror("socket");exit(1);}//指定对端的端口号 ip 和协议raddr.sin_family = AF_INET;raddr.sin_port = htons(1999);inet_pton(AF_INET, argv[1], &raddr.sin_addr);//进行链接if(connect(sd, (void*)&raddr, sizeof(raddr)) < 0){perror("connect");exit(1);}while(NULL != fgets(buf, 1024, stdin)){write(sd, buf, sizeof(buf));read(sd, rcvbuf, 1024);puts(rcvbuf);}exit(0);
}



一个简单的TCP客户/服务器的程序相关推荐

  1. Qt4_写TCP客户/服务器应用程序

    写TCP客户/服务器应用程序 QTcpSocket和QTcpServer类可以用来实现TCP客户端和服务器.TCP是一个传输协议,它构成了包括FTP和HTTP等很多应用程序层的因特网协议基础,它也可以 ...

  2. C++基于TCP/IP简单的客户端、服务器通信程序实例

    本篇文章实现了一个基于TCP 的一个非常简单的客户/服务器通信程序实例.该程序中通讯协议使用的是面向连接的TCP协议SOCK_STREAM, 服务器的ip地址为本地地址即: 127.0.0.1,端口号 ...

  3. 客户和服务器之间响应的序列,网络编程-第五讲-TCP客户-服务器程序例子.pdf-原创力文档...

    网络编程 第五讲TCP客户-服务器程序例子 多进程并发服务器基本架构 pid_t pid; int listenfd, connfd; listenfd = Socket( ... ); /* fil ...

  4. 笨办法学C 练习45:一个简单的TCP/IP客户端

    练习45:一个简单的TCP/IP客户端 原文:Exercise 45: A Simple TCP/IP Client 译者:飞龙 我打算使用RingBuffer来创建一个非常简单的小型网络测试工具,叫 ...

  5. 一个简单的Java web服务器实现

    前言 一个简单的Java web服务器实现,比较简单,基于java.net.Socket和java.net.ServerSocket实现: 程序执行步骤 创建一个ServerSocket对象: 调用S ...

  6. network programming-简单的TCP客户服务器编程

    简单的TCP(Transport Control Pr)程序客户端流程:创建套接字(套接字用IP地址:端口号)表示)socket()->请求连接connect()->交换数据 send() ...

  7. 《UNP》随笔——“实现一个简单的回射服务器”存在的不足(信号处理)

    尽管实现了一个简单的回射服务器,但依旧存在一些不足: 服务端的子进程结束的时候,由于父进程未对子进程发送的SIGCHLD信号进行处理,会导致子进程进入僵死状态.这一点该如何解决? 客户端A向服务端B发 ...

  8. java 客户端 tcp_一个简单的Tcp客户端

    一个简单的Tcp客户端 import java.io.InputStream; import java.net.InetAddress; import java.net.Socket; public ...

  9. 一个简单的python日志服务器

    一个简单的python日志服务器,主要目的是搜集各python logging记录的日志,将其简单汇总.源码如下: # -*- coding: utf-8 -*- ''' Created on 201 ...

  10. 自己动手搭建一个简单的静态资源服务器

    文章目录 自己动手搭建一个简单的静态资源服务器 介绍 一.设计到的模块 备注: 二.代码结构 三.具体代码 自己动手搭建一个简单的静态资源服务器 介绍 ​ 通过此文章的学习,可以自己使用NodeJs搭 ...

最新文章

  1. 3Mysql 的常用操作
  2. open3d 0.13版本 vs2019编译
  3. 首发:徐亦达团队新论文推荐(ECCV2020):端到端多人多视角3d动态匹配网络
  4. 初创团队可能不适合应届生小孩
  5. [react] 什么是React.forwardRef?它有什么作用?
  6. mysql root用户密码个性
  7. Zookeeper UI管理界面安装
  8. html写界面,C++|Qt后台处理业务(后台登录例子JavaScript给Qt提供数据)
  9. 得推乡镇拼车系统源码v1.0
  10. 云图说|云上攻击早知道,少不了这个“秘密武器”!
  11. Spring与Quartz集成详解
  12. hibernate 实现数据库查询
  13. od ida 栈溢出初体验
  14. 软件测评师考试大纲2018
  15. 初学者都能看懂的蒙特卡洛方法以及python实现
  16. python计算无穷级数求和常用公式_[python][计算方法]利用无穷级数计算幂运算(开根号)...
  17. 大数据开发工程师岗位分析
  18. hbuilderx gitee操作教程
  19. 作业2(4)求m和n之间的和
  20. sql server oracle转换,sql-server – 如何从SQL Server DBA转换到Oracle?

热门文章

  1. php define函数
  2. Intellij IDEA 导入Maven项目
  3. jdk8升级jdk11报 java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
  4. Linux下MySQL的基础(一)
  5. 青岛市新添智能服务平台 借力大数据智慧城市再扩容
  6. react.js 表单验证-登录框
  7. nginx1.8.0安装
  8. 去小机化思维(一)--【软件和信息服务】2015.02
  9. yum install报错:Another app is currently holding the yum lock
  10. SpringBoot2.x填坑(二):elastic search 报错{error:{root_cause:[{type:index_not_found_exception,...