
socket通信
tcp通信
刘拉拉的book
这个作者很懒,什么都没留下…
展开
-
内网和外网之间的通信
对于初学者而已,我们学习的网络编程(如TCP,UDP编程),我们通常都是在局域网内进行通信测试,有时候我们或者会想,我们现在写的内网网络数据和外网的网络数据有什么不同,我们内网的数据是如何走出外网的呢?再者,我们大多人都是使用宽带上网,结果发现,A 和 B 的局域网 IP 都是192.168.31.11,当他们都访问百度浏览网页时,百度服务器回复数据时,如何区分是给 A 还是给 B 呢?公有 IP 和私有 IP 的区别首先,我们需要了解一下什么是公有 IP 和私有 IP ?公有地址(Public转载 2020-06-29 17:43:29 · 1865 阅读 · 0 评论 -
epoll函数及用法
epoll介绍相关函数相关结构体例子一、epollEpoll 是一种高效的管理socket的模型,相对于select和poll来说具有更高的效率和易用性。传统的select以及poll的效率会因为 socket数量的线形递增而导致呈二次乃至三次方的下降,而epoll的性能不会随socket数量增加而下降。二、相关函数头文件:#include <sys/epoll.h>...转载 2020-04-21 15:47:51 · 1308 阅读 · 0 评论 -
浅析epoll的水平触发和边缘触发,以及边缘触发为什么要使用非阻塞IO
一.基本概念我们通俗一点讲:Level_triggered(水平触发):当被监控的文件描述符上有可读写事件发生时,epoll_wait()会通知处理程序去读写。如果这次没有把数据一次性全部读写完(如读写缓冲区太小),那么下次调用 epoll_wait()时,它还会通知你在上没读写完的文件描述符上继续读写,当然如果你一直不去读写,它会一直通知你!!!如果系统中有大量你不需要读写的就绪文件描述符,...转载 2019-08-19 10:22:25 · 688 阅读 · 0 评论 -
connect错误:no route to host
linux下,socket ,用vmware装了两个虚拟机,分别运行客户端和服务器端。客户端连接的时候报错:connect error:no route to host。 但是在同一虚拟机下运行正常。 我检查了socket返回值,正常; 地址和端口也没问题。 两台虚拟机可以互ping 请教高手,这是什么情况??没有关闭防火墙:systemctl stop firealld.service...原创 2020-04-15 17:20:26 · 18276 阅读 · 4 评论 -
socket编程中write、read和send、recv
send():是一个系统调用函数,用来发送消息到一个套接字中#include <sys/types.h>#include <sys/socket.h>ssize_t send(int sockfd, const void *buf, size_t len, int flags);说明:send()函数只能在套接字处于连接状态的时候才能使用。(只有这样才知道接受者...转载 2020-02-10 16:52:30 · 1154 阅读 · 0 评论 -
TCP三次握手和网络编程函数的对应关系
1.客户端调用connect()函数,此时客户端会向服务端发送SYN2.服务端收到SYN后,会从listen()函数返回SYN+ACK3.客户端收到connect()函数的返回,之后向服务端发送最后一个ACK4.服务端收到最后一个ACK以后,将该连接请求从未完成连接队列放入已完成连接队列中,等待accept()从该队列中取出...转载 2019-09-19 17:52:11 · 808 阅读 · 0 评论 -
sockaddr和sockaddr_in详解
struct sockaddr和struct sockaddr_in这两个结构体用来处理网络通信的地址。一、sockaddr 定义sockaddr在头文件include<sys/socket.h中定义,sockaddr的缺陷是:sa_data把目标地址和端口信息混在一起了,如下:struct sockaddr {sa_family_t sin_family;//地址族 ch...转载 2019-08-21 14:47:41 · 809 阅读 · 0 评论 -
socket中TCP的三次握手建立连接
socket中发送的TCP三次握手我们知道tcp建立连接要进行“三次握手”,即交换三个分组。大致流程如下:客户端向服务器发送一个SYN J服务器向客户端响应一个SYN K,并对SYN J进行确认ACK J+1客户端再想服务器发一个确认ACK K+1只有就完了三次握手,但是这个三次握手发生在socket的那几个函数中呢?请看下图:从图中可以看出,当客户端调用connect时,触发了...转载 2019-08-20 21:57:06 · 335 阅读 · 0 评论 -
网络编程--网络字节序和主机字节序详解
转自:https://blog.youkuaiyun.com/msdnwolaile/article/details/50727653空中传输的字节的顺序即网络字节序为标准顺序,考虑到与协议的一致以及与同类其它平台产品的互通,在程序中发数据包时,将主机字节序转换为网络字节序,收数据包处将网络字 节序转换为主机字节序。网络程序开发时 或是跨平台开发时 应该注意保证只用一种字节序 不然两方的解释不一样就会产生b...转载 2019-04-19 10:41:02 · 4847 阅读 · 0 评论 -
socket编程小问题:地址已经被使用——Address already in use
转自:https://www.cnblogs.com/computer1-2-3/p/6875367.html很多socket编程的初学者可能会遇到这样的问题:如果先ctrl+c结束服务器端程序的话,再次启动服务器就会出现Address already in use这个错误,或者你的程序在正常关闭服务器端socket后还是有这个问题。然后你开始迷惑了,难道是忘记将socket给关闭了,或是关...转载 2019-04-17 15:44:45 · 2448 阅读 · 0 评论 -
socket编程之实现一个简单的TCP通信
原文:https://blog.youkuaiyun.com/qq_33951180/article/details/68066634一、理解socket1、socket即为套接字,在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一的标识网络通讯中的一个进程,“IP地址+TCP或UDP端口号”就为socket。2、在TCP协议中,建立连接的两个进程(客户端和服务器)各自有一个socket来标识...转载 2019-08-21 15:15:03 · 1085 阅读 · 0 评论