recv

What value will recv() return if it receives a valid TCP packet with payload sized 0

爱⌒轻易说出口 提交于 2019-11-29 15:32:35
问题 In TCP socket programming, if recv() returns 0, it is taken as an indication that the other side closed its connection. However, AFAIK, the TCP RFC does not mandate the payload of TCP to be > 0. So, theoretically, a TCP stack can receive a message with payload 0. So, essentially my question is what will recv() returns if it receives a packet of payload sized 0? If it returns 0, then how do we distinguish it from a closed connection indication. 回答1: TCP segments with a payload size of 0 are

Unblock recvfrom when socket is closed

折月煮酒 提交于 2019-11-29 14:16:42
Let's say I start a thread to receive on a port. The socket call will block on recvfrom. Then, somehow in another thread, I close the socket. On Windows, this will unblock recvfrom and my thread execution will terminate. On Linux, this does not unblock recvfrom, and as a result, my thread is sitting doing nothing forever, and the thread execution does not terminate. Can anyone help me with what's happening on Linux? When the socket is closed, I want recvfrom to unblock I keep reading about using select(), but I don't know how to use it for my specific case. ajfabbri Call shutdown(sock, SHUT

搭建自己的技术博客系列(三)让你的博客拥有评论功能!

本秂侑毒 提交于 2019-11-29 14:15:36
  给大家介绍一个博客评论神器,Valine。      本来hexo博客用的是gitment,我也非常喜欢,看着逼格就超高呀。无奈我用着bug略多,而且毕竟有github账户的小伙伴似乎并不多。于是我就忍痛准备换评论系统。然后在最近刚刚加入的hexo博客群里,看见了一个神器。也就是本篇主人公——Valine.js。      具体配置就见如下的文章吧。它的定义—— 一款极简的无后端评论系统。      在多说和网易云跟帖相继倒闭的情况下,这个简直是救人一命胜造七级浮屠呀。      Valine -- 一款极简的评论系统      Valine官网      这个评论系统是基于LeanCloud的,大家应该对这个很熟悉,对,Hexo的博客阅读量统计也是它。官网网址如下,需要注册一个账户。      Leancloud配置      首先访问Leancloud官网https://leancloud.cn/ 有Github账号的小伙伴可以用Github账号进行登陆然后绑定邮箱就可以啦! 进入之后点击创建应用 在这里插入图片描述      在这里插入图片描述      在这里插入图片描述      在这里插入图片描述      Valine配置      在这里插入图片描述      将下载好的 Valine.min.js 放置于 next\source\js\src\ 下 接着

网络编程之Socket代码实例

放肆的年华 提交于 2019-11-29 14:14:24
网络编程之Socket代码实例 一、基本Socket例子 Server端: # Echo server program import socket HOST = '' # Symbolic name meaning all available interfaces PORT = 50007 # Arbitrary non-privileged port sock_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock_server.bind((HOST, PORT)) sock_server.listen(1) #开始监听,1代表在允许有一个连接排队,更多的新连接连进来时就会被拒绝 conn, addr = sock_server.accept() #阻塞直到有连接为止,有了一个新连接进来后,就会为这个请求生成一个连接对象 with conn: print('Connected by', addr) while True: data = conn.recv(1024) #接收1024个字节 if not data: break #收不到数据,就break conn.sendall(data) #把收到的数据再全部返回给客户端 Client端: # Echo client program import

python-网络编程-socket编程

给你一囗甜甜゛ 提交于 2019-11-29 13:57:11
一、TCP\IP(网络通信协议)简介 TCP:(Transmission Control Protocol)传输控制协议,面向有连接的通信协议    UDP:数据报文协议,面向无连接的通信协议 IP:(Internet Protocol)网际协议 二、socket语法 网络七层模型(OSI模型) 1物理层——>2数据链路层(mac地址)——>3网络层(IP)——>4传输层(TCP/IP 、UDP协议传输)——>5会话层——>6表示层——>7应用层(http、ftp、smtp、pop3) socket语法及相关知识点:    socket是为两个程序之间建立一个双向通道,来实现数据传输。 网络通信是通过ip+port来定位具体的目标机器的具体的服务,操作系统有0-65535个端口,每个端口独立对外提供服务。 建立一个socket必须有两个端:服务端和客户端 服务端 :被动等待接受客户端的请求 建立流程:1.建立一个socket实例sk——>sk.bind()设置服务端可监听的网络地址和端口号——>sk.listen()开始监听——> cnn,val=sk.accepr()接受客户端的连接——>cnn.recv()接受数据——>cnn.send()发送数据——>close 1、建立一个socket实例 :socket.socket() 1 import socket 2 server

Python Socket

不想你离开。 提交于 2019-11-29 13:52:36
Python 使用Socket提供对TCP / UDP网络通信的支持。 TCP client TCP是带连接的可靠通信协议。创建TCP连接时,主动发起连接的称为客户端,被动响应连接称为服务器。 示例,请求博客园首页: import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('www.cnblogs.com',80)) s.send(b'GET / HTTP/1.1\r\nHost: www.cnblogs.com\r\nConnection: close\r\n\r\n') # receive buf = list() while True: d = s.recv(1024) if d: buf.append(d) else: break print(buf) s.close() 说明: socket.socket() 建立socket连接。 socket.AF_INET代表使用IPv4协议,socket.AF_INET6使用更新的IPv6协议。 SOCK_STREAM指定使用面向流的TCP协议。 s.connect() 进行socket连接,参数为包含url和port的元组。 s.send(str) 通过socket发送数据。 s.recv(max) 接收返回的数据

初学Python——Socket网络编程

泄露秘密 提交于 2019-11-29 13:51:51
认识socket socket本质上就是在2台网络互通的电脑之间,架设一个通道,两台电脑通过这个通道来实现数据的互相传递。我们知道网络 通信 都 是基于 ip+port(端口) 方能定位到目标的具体机器上的具体服务,操作系统有0-65535个端口,每个端口都可以独立对外提供服务,如果 把一个公司比做一台电脑 ,那公司的总机号码就相当于ip地址, 每个员工的分机号就相当于端口, 你想找公司某个人,必须 先打电话到总机,然后再转分机 。 建立一个socket必须至少有2端, 一个服务端,一个客户端, 服务端被动等待并接收请求,客户端主动发起请求, 连接建立之后,双方可以互发数据。 基本参数 Socket Families(地址簇) socket. AF_UNIX 本机进程间通信 socket. AF_INET  IPV4(默认)  socket. AF_INET6 IPV6 Socket Types(类型) socket. SOCK_STREAM 流式socket,代表TCP协议(默认) socket. SOCK_DGRAM 数据报式socket,代表UDP协议 socket方法 sk = socket. socket ( family=AF_INET , type=SOCK_STREAM , proto=0 , fileno=None ) 建立socket连接对象 sk.bind

C# Socket编程笔记

≯℡__Kan透↙ 提交于 2019-11-29 11:15:50
注:本文为个人学习摘录,原文地址:http://www.cnblogs.com/stg609/archive/2008/11/15/1333889.html 看到这个题目,是不是很眼熟?在博客园里搜下,保证会发现关于这个东东的文章实在是太多了~~~真得是没有写得必要,而且我也有点懒得去琢磨字句。(看到这,肯定得来个转折的了,不然就看不到下文了,不是吗)但是,为了自己下一篇要写的文章做参考,还是有必要先补充一下socket基础知识。 注意:如果你已经接触过socket,那就没什么必要耽误时间看下去了。另外,如果发现其中任何错误,欢迎直接指出。 1.按惯例先来介绍下socket Windows中的很多东西都是从Unix领域借鉴过来的,Socket也是一样。在Unix中,socket代表了一种文件描述符(在Unix中一切都是以文件为单位),而这里这个描述符则是用于描述网络访问的。什么意思呢?就是程序员可以通过socket来发送和接收网络上的数据。你也可以理解成是一个API。有了它,你就不用直接去操作网卡了,而是通过这个接口,这样就省了很多复杂的操作。 在C#中,MS为我们提供了 System.Net.Sockets 命名空间,里面包含了Socket类。 2.有了socket,那就可以用它来访问网络了 不过你不要高兴得太早,要想访问网络,还得有些基本的条件(和编程无关的我就不提了):a.

C# Socket编程笔记

我的梦境 提交于 2019-11-29 11:15:30
看到这个题目,是不是很眼熟?在博客园里搜下,保证会发现关于这个东东的文章实在是太多了~~~真得是没有写得必要,而且我也有点懒得去琢磨字句。(看到这,肯定得来个转折的了,不然就看不到下文了,不是吗)但是,为了自己下一篇要写的文章做参考,还是有必要先补充一下socket基础知识。 注意:如果你已经接触过socket,那就没什么必要耽误时间看下去了。另外,如果发现其中任何错误,欢迎直接指出。 1.按惯例先来介绍下socket Windows中的很多东西都是从Unix领域借鉴过来的,Socket也是一样。在Unix中,socket代表了一种文件描述符(在Unix中一切都是以文件为单位),而这里这个描述符则是用于描述网络访问的。什么意思呢?就是程序员可以通过socket来发送和接收网络上的数据。你也可以理解成是一个API。有了它,你就不用直接去操作网卡了,而是通过这个接口,这样就省了很多复杂的操作。 在C#中,MS为我们提供了 System.Net.Sockets 命名空间,里面包含了Socket类。 2.有了socket,那就可以用它来访问网络了 不过你不要高兴得太早,要想访问网络,还得有些基本的条件(和编程无关的我就不提了):a. 要确定本机的IP和端口,socket只有与某一IP和端口绑定,才能发挥强大的威力。b. 得有协议吧(否则谁认得你这发送到网络的是什么呀)。想要复杂的

C# Socket编程笔记

我是研究僧i 提交于 2019-11-29 11:15:00
看到这个题目,是不是很眼熟?在博客园里搜下,保证会发现关于这个东东的文章实在是太多了~~~真得是没有写得必要,而且我也有点懒得去琢磨字 句。(看到这,肯定得来个转折的了,不然就看不到下文了,不是吗)但是,为了自己下一篇要写的文章做参考,还是有必要先补充一下socket基础知识。 注意:如果你已经接触过socket,那就没什么必要耽 误时间看下去了。另外,如果发现其中任何错误,欢迎直接指出。 1.按惯例先来介绍下socket Windows 中的很多东西都是从Unix领域借鉴过来的,Socket也是一样。在Unix中,socket代表了一种文件描述符(在Unix中一切都是以文件为单 位),而这里这个描述符则是用于描述网络访问的。什么意思呢?就是程序员可以通过socket来发送和接收网络上的数据。你也可以理解成是一个API。有 了它,你就不用直接去操作网卡了,而是通过这个接口,这样就省了很多复杂的操作。 在C#中,MS为我们提供了 System.Net.Sockets 命名空间,里面包含了Socket类。 2.有了socket,那就可以用它来 访问网络了 不过你不要高兴得太早,要想访问网络,还得有些基本的条件(和编程无关的我就不提了):a. 要确定本机的IP和端口,socket只有与某一IP和端口绑定,才能发挥强大的威力。b. 得有协议吧(否则谁认得你这发送到网络的是什么呀)