一个简单的TCP客户/服务器的程序
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客户/服务器的程序相关推荐
- Qt4_写TCP客户/服务器应用程序
写TCP客户/服务器应用程序 QTcpSocket和QTcpServer类可以用来实现TCP客户端和服务器.TCP是一个传输协议,它构成了包括FTP和HTTP等很多应用程序层的因特网协议基础,它也可以 ...
- C++基于TCP/IP简单的客户端、服务器通信程序实例
本篇文章实现了一个基于TCP 的一个非常简单的客户/服务器通信程序实例.该程序中通讯协议使用的是面向连接的TCP协议SOCK_STREAM, 服务器的ip地址为本地地址即: 127.0.0.1,端口号 ...
- 客户和服务器之间响应的序列,网络编程-第五讲-TCP客户-服务器程序例子.pdf-原创力文档...
网络编程 第五讲TCP客户-服务器程序例子 多进程并发服务器基本架构 pid_t pid; int listenfd, connfd; listenfd = Socket( ... ); /* fil ...
- 笨办法学C 练习45:一个简单的TCP/IP客户端
练习45:一个简单的TCP/IP客户端 原文:Exercise 45: A Simple TCP/IP Client 译者:飞龙 我打算使用RingBuffer来创建一个非常简单的小型网络测试工具,叫 ...
- 一个简单的Java web服务器实现
前言 一个简单的Java web服务器实现,比较简单,基于java.net.Socket和java.net.ServerSocket实现: 程序执行步骤 创建一个ServerSocket对象: 调用S ...
- network programming-简单的TCP客户服务器编程
简单的TCP(Transport Control Pr)程序客户端流程:创建套接字(套接字用IP地址:端口号)表示)socket()->请求连接connect()->交换数据 send() ...
- 《UNP》随笔——“实现一个简单的回射服务器”存在的不足(信号处理)
尽管实现了一个简单的回射服务器,但依旧存在一些不足: 服务端的子进程结束的时候,由于父进程未对子进程发送的SIGCHLD信号进行处理,会导致子进程进入僵死状态.这一点该如何解决? 客户端A向服务端B发 ...
- java 客户端 tcp_一个简单的Tcp客户端
一个简单的Tcp客户端 import java.io.InputStream; import java.net.InetAddress; import java.net.Socket; public ...
- 一个简单的python日志服务器
一个简单的python日志服务器,主要目的是搜集各python logging记录的日志,将其简单汇总.源码如下: # -*- coding: utf-8 -*- ''' Created on 201 ...
- 自己动手搭建一个简单的静态资源服务器
文章目录 自己动手搭建一个简单的静态资源服务器 介绍 一.设计到的模块 备注: 二.代码结构 三.具体代码 自己动手搭建一个简单的静态资源服务器 介绍 通过此文章的学习,可以自己使用NodeJs搭 ...
最新文章
- 3Mysql 的常用操作
- open3d 0.13版本 vs2019编译
- 首发:徐亦达团队新论文推荐(ECCV2020):端到端多人多视角3d动态匹配网络
- 初创团队可能不适合应届生小孩
- [react] 什么是React.forwardRef?它有什么作用?
- mysql root用户密码个性
- Zookeeper UI管理界面安装
- html写界面,C++|Qt后台处理业务(后台登录例子JavaScript给Qt提供数据)
- 得推乡镇拼车系统源码v1.0
- 云图说|云上攻击早知道,少不了这个“秘密武器”!
- Spring与Quartz集成详解
- hibernate 实现数据库查询
- od ida 栈溢出初体验
- 软件测评师考试大纲2018
- 初学者都能看懂的蒙特卡洛方法以及python实现
- python计算无穷级数求和常用公式_[python][计算方法]利用无穷级数计算幂运算(开根号)...
- 大数据开发工程师岗位分析
- hbuilderx gitee操作教程
- 作业2(4)求m和n之间的和
- sql server oracle转换,sql-server – 如何从SQL Server DBA转换到Oracle?
热门文章
- php define函数
- Intellij IDEA 导入Maven项目
- jdk8升级jdk11报 java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
- Linux下MySQL的基础(一)
- 青岛市新添智能服务平台 借力大数据智慧城市再扩容
- react.js 表单验证-登录框
- nginx1.8.0安装
- 去小机化思维(一)--【软件和信息服务】2015.02
- yum install报错:Another app is currently holding the yum lock
- SpringBoot2.x填坑(二):elastic search 报错{error:{root_cause:[{type:index_not_found_exception,...