![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络编程学习
新博客地址:tingyun.site
忘记一个当了很久的自己,从新开始
展开
-
socket初接触---多用户服务器简单交互(上)
socket是什么?它处于应用层和传输层之间的一个抽象层(就是你想象出来的它处于这两者之间),叫套接字(本质上是tcp/ip抽象出的一些方法可以通过它来调用,而我们在应用层可以使用它来进行通信),实现了一个接口的功能。 传输层广为使用的tcp/ip协议栈处于内核之中,我们对socket进行编程,就是主动编写(网络)进程间的通信(靠的是tcp/ip协议),实现一些真正通信上的服务功能。 在学习so原创 2016-04-22 20:25:07 · 1773 阅读 · 0 评论 -
socket03---小变形,点对点通信聊天
回顾一下上篇中提到的几个常用的结构和函数://最常用的ipv4的sockaddrstruct sockaddr_in{ in_port_t sin_port; //2个字节,实为short int struct in_addr sin_addr; //4个字节 sa_family_t sin_family; //2个字节,s原创 2016-04-28 20:22:01 · 1338 阅读 · 3 评论 -
socket04---流协议和粘包问题及解决
首先来说说什么是流协议和粘包问题:之前我们写的那几篇都是基于TCP传输协议的socket通信,而我们知道TCP传输数据是基于STREAM流的,什么意思呢?这么说吧,TCP在传输数据的时候,是不区分边界的(数据和数据之间没有边界),因为是基于字节流,所以数据对TCP来说就是一大堆没有结构区别的字节块。那意味着什么?意味着TCP并不能对多个数据的整体的信息进行区分(打个比方:就像是你说一堆话没有标点符号原创 2016-04-29 19:28:34 · 2090 阅读 · 1 评论 -
socket初接触---多用户服务器简单交互(下)
上一篇我们提到了很多的知识点,什么套接字,字节流,字节序….这次来简单实现一个服务器对多用户的简单消息映射交互(就是我在client端随便写段话传输给server,server接受后再返回给client端)在写主代码之前,先看下面这个代码段:#define ERR_EXIT(m) \ do \ { perror(m); \ exit(EXIT_FAILUR原创 2016-04-23 13:36:04 · 1573 阅读 · 0 评论 -
socket编程---fgets和fputs函数使用理解
这一节是继续上一节socket05的讨论,来探讨在使用socket进行通信中遇到的一些函数使用理解误区1.fgets的使用注意点在写socket通信(代码见上一篇中,只是将sendbuf和recvbuf的容量改变了其余不变)的时候遇到的问题,这个现象是:在fgets(sendbuf,sizeof(sendbuf),stdin)的时候,假设我的sendbuf容量是n,也就是char sendbuf[n原创 2016-07-24 14:47:39 · 3865 阅读 · 0 评论 -
socket06---僵尸进程的避免
在之前的篇章中,我们已经实现了点对点通信,服务器对多个客户端信息回射,我们一直都是以进程的方式来处理这些通信,一般都是server端在应对多个client端的请求时,fork出多个子进程来处理对应的client,这种方式带来了一种新的问题,叫僵尸进程。1.首先介绍一下什么是僵尸进程?维基百科上的介绍如下: 在类UNIX系统中,僵尸进程是指完成执行(通过exit系统调用,或运行时发生致命错误原创 2016-07-24 16:20:21 · 1193 阅读 · 0 评论 -
socket05---recv && send使用,回射客户端
开始复习网络编程这一块,话说有一段时间了,那不多说了,开始吧!这一节,我们学习的是recv和send函数的使用,如果对初始化socket,绑定,连接,write和read等基本操作不太熟悉的话,可以参考前几篇博文,还有网络字节序和本地字节序的转换,需要注意的点也不少,多写才能熟悉。先介绍一下recv和send函数recv函数 提供了和read一样的功能,不同的是它多了一个参数ssize_t rec原创 2016-07-19 20:44:00 · 3999 阅读 · 0 评论