TCP/IP,单进程服务器与客户端连接通信,ipv4,TCP传输,无复用简单实例

一、实例设定
1、服务器与客户端均是本机,服务器绑定的ip可以是宏INADDR_ANY,这个宏表示可以和本机的所有网卡绑定,客户端连接的ip是127.0.0.1,这个ip就代表本机,端口号是9527。
2、服务端可以将客户端发送的字符串使用toupper函数小写转大写,然后打印在屏幕上。
3、服务器为单进程,单次连接,仅一次连接非复用案例。
4、此实例用于梳理连接的思路

5、这里使用的Bind,Accept等函数是在头文件中引用了的,使用的时候使用库函数就行,详细的看这篇
网络编程中的任何函数在调用时都需要检查返回值的简化做法

二、服务器的连接步骤
1、建立监听套接字用于接收客户端

int lfd = 0;
lfd = Socket(AF_INET, SOCK_STREAM, 0);

2、监听套接字绑定ip和端口

#define SERV_PORT 9527
struct sockaddr_in serv_addr;
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(SERV_PORT);
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);

3、设置监听上限

Listen(lfd,128);

4、阻塞,接收来自客户端的连接

int cfd = 0
struct sockaddr_in clit_addr;
clit_addr_len = sizeof(clit_addr);
cfd = Accept(lfd, (struct sock_addr*)&clit_addr,&clit_addr_len);

5、阻塞,从客户端套接字中读取信息并打印

int ret = 0;
ret = read(cfd,buf,sizeof(buf));
write(STDOUT_FILENO, buf, ret);

6、对接收到的数据进行处理并发回

for(i = 0;i<ret;i++)buf[i] = toupper(buf[i]);write(cfd, buf, ret);

7、关闭双套接字

close(lfd);
close(cfd);

三、服务器整体代码

#include "tcp_socket.h"#define SERV_PORT 9527int main(int argc, char *argv[])
{int lfd = 0,cfd = 0;struct sockaddr_in serv_addr,clit_addr;socklen_t clit_addr_len, client_IP_len;int ret,i;char buf[BUFSIZ], client_IP[1024];serv_addr.sin_family = AF_INET;serv_addr.sin_port = htons(SERV_PORT);serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);lfd = Socket(AF_INET, SOCK_STREAM, 0);Bind(lfd,(struct sock_addr*)&serv_addr,sizeof(serv_addr));Listen(lfd,128);clit_addr_len = sizeof(clit_addr);cfd = Accept(lfd, (struct sock_addr*)&clit_addr,&clit_addr_len);printf("client IP: %s, port: %d\n",inet_ntop(AF_INET, &clit_addr.sin_addr.s_addr, client_IP, sizeof(client_IP)),ntohs(clit_addr.sin_port));while(1){ret = read(cfd,buf,sizeof(buf));write(STDOUT_FILENO, buf, ret);if(ret == 1){printf("input 0,return\n");close(cfd);}for(i = 0;i<ret;i++)buf[i] = toupper(buf[i]);write(cfd, buf, ret);    }close(lfd);close(cfd);return 0;
}

四、使用nc模拟客户端进行连接,单次连接,单进程服务器,实例完成,流程走通。

TCP/IP,单进程服务器与客户端连接通信,ipv4,TCP传输,无复用简单实例,nc模拟客户端连接服务器相关推荐

  1. 如何启用服务器的TCP IP协议,本地联接的属性里的TCP/IP协议被禁用,怎么开启啊?...

    在Windows XP 中默认安装了 TCP/IP.但是,如果出了网络问题想卸载后重新安装 TCP/IP 就不容易了:在"本地连接"属性中显示的此连接使用下列项目列表中单击 Int ...

  2. TCP/IP协议简述(OSI7层模型与TCP/IP协议)

    TCP/IP协议简述(OSI7层模型与TCP/IP协议) OSI7层模型与TCP/IP协议本身没有太直接的关联,从名字也不难看出.一个是作为标准体系.参考模型(这个参考模型中其实也是有一些具体协议的) ...

  3. linux socket ip层配置,Linux下Socket通信(TCP实现)

    近期在做的项目中,涉及到了进程间数据传输,系统的原本实现是通过管道,但是原有的实现中两个进程是在同一台机器,而且两个进程的关系为父子关系,而我们要做的是将其中一个进程移植到服务器上,因此两个进程要分开 ...

  4. c#利用TCP/IP协议与川崎机器人进行通信

    由于本人在工业自动化行业做机器视觉的工作,所以除了图像处理方面要掌握外,还需要与工业机器人进行通信.最近学习了计算机与川崎机器人的TCP/IP通信,于是在这里记录一下. 除了直接与机器人通信外,有一种 ...

  5. sidirect 连接西门子_配置SIDirect DAServer 通过TCP/IP实现和西门子PLC的通信(1)-机电之家网PLC技术网...

    无需借助西门子的Simaticnet 软件,SIDirect DAS Server 可以通过标准的以太网卡访问S7 200, S7 300,S7 400 家族PLC.SIDirect DAServer ...

  6. TCP/IP四层模型、HTTP、HTTPS、TCP

    文章目录 一.计算机分层模型 1.1 TCP/IP四层模型 1.1.1 四层模型的划分 1.1.2 四层模型间的数据传输 1.1.3 TCP/IP四层模型与OSI七层模型 1.2 分层模型用到的协议 ...

  7. TCP/IP详解 第十二章(10) TCP Socket 编程

    前言 不管面试 Java .C/C++.Python 等开发岗位, TCP 的知识点可以说是的必问的了. 任 TCP 虐我千百遍,我仍待 TCP 如初恋. 遥想小林当年校招时常因 TCP 面试题被刷, ...

  8. java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之计网_Part_1-1(计算机网络体系_七层模型五层模型TCP/IP四层模型、TCPUDPIP的故事【TCP三握四挥】)整起

    PART1:计算机网络体系可以大致分为一下三种, 每一层有自己对应的协议,每一层都是向上一层提供服务,每个分层中所有的协议都称为协议栈 协议:网络中传输信息时的规范和规则 各层一些重要的协议 网络:通 ...

  9. TCP/IP详解 第十二章(9) TCP断开连接

    前言 不管面试 Java .C/C++.Python 等开发岗位, TCP 的知识点可以说是的必问的了. 任 TCP 虐我千百遍,我仍待 TCP 如初恋. 遥想小林当年校招时常因 TCP 面试题被刷, ...

最新文章

  1. C#实现Des加密和解密
  2. Csharp: 拼音转汉字字符搜索字符串
  3. Windows窗体的所有菜单
  4. 驱动程序实例(一):LED设备驱动程序( platform + cdev)
  5. python权限不够无法写入_解决python使用pip安装模块的权限问题
  6. Java Integer的缓存策略
  7. 【Hadoop Summit Tokyo 2016】Spark上可扩展的深度学习
  8. [深入学习C#]利用反射给对象赋值
  9. mysql 改成宽松模式_mysql5.6 sql_mode设置为宽松模式
  10. 3.5链表----链表中元素的删除(只删除一个元素情况)
  11. overridePendingTransition介绍
  12. mvc源码解读(10)-ParameterDescriptor方法Action方法的参数描述对象
  13. python3 threading.lock_python3爬虫lock如何有序的处理多线程?
  14. GameMap其他初始化
  15. 当智能门锁已不再是锁
  16. SIM900A模块发送AT指令“ AT+CPIN? “返回“ PH-NET PIN ”的解决方法
  17. C语言数字图像处理进阶---1 Photoshop图层算法
  18. 想知道未来孩子长相?Python人脸融合告诉你
  19. 「数据架构」介绍下一代主数据管理(MDM)
  20. Zookeeper详解(五):通过JMX查看Zookeeper信息

热门文章

  1. 男人的伤感、男人的痛你永远不会懂
  2. php header保存文件,php利用header函数实现文件下载时直接提示保存
  3. 寻找250c语言pta,Phoenix 子晞优势供应PhoenixTFKC 2,5/ 8-STF-5,08BKAUNZX42
  4. NPDP考试相关事宜
  5. zoom属性(其它)和z-index属性(定位)
  6. Tableau——制作漏斗图
  7. linux命令userdel,linux命令:userdel
  8. win10能运行德c语言,Win10运行不了vc6.0报错“0x0000142”怎么办?
  9. 看呆了!二面高德 Java 岗,问了一堆源码,微服务,分布式,Redis,心累
  10. CSS - CSS三角