套接字

C#网络编程二:Socket编程

落爺英雄遲暮 提交于 2019-11-29 11:10:01
一:什么是SOCKET socket的英文原义是“孔”或“插座”。作为进程通信机制,取后一种意思。通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄(其实就是两个程序通信用的)。 socket非常类似于电话插座。以一个电话网为例:电话的通话双方相当于相互通信的2个程序,电话号码就是ip地址。任何用户在通话之前,首先要占有一部电话机,相当于申请一个socket;同时要知道对方的号码,相当于对方有一个固定的socket。然后向对方拨号呼叫,相当于发出连接请求。对方假如在场并空闲,拿起电话话筒,双方就可以正式通话,相当于连接成功。双方通话的过程,是一方向电话机发出信号和对方从电话机接收信号的过程,相当于向socket发送数据和从socket接收数据。通话结束后,一方挂起电话机相当于关闭socket,撤销连接。 1、套接字分类 为了满足不同程序对通信质量和性能的要求,一般的网络系统都提供了以下3种不同类型的套接字,以供用户在设计程序时根据不同需要来选择: 流式套接字(SOCK_STREAM):提供了一种可靠的、面向连接的双向数据传输服务。实现了数据无差错,无重复的发送,内设流量控制,被传输的数据被看做无记录边界的字节流。在TCP/IP协议簇中,使用TCP实现字节流的传输,当用户要发送大批量数据,或对数据传输的可靠性有较高要求时使用流式套接字。 数据报套接字(SOCK

socket 套接字

天大地大妈咪最大 提交于 2019-11-29 10:27:58
一,tcp 类型 步骤:(socket.AF_INT,SOCK_STREAM 表示选择ipv4类型和tcp连接方式) 1,导包:import socket 2,server 服务端 建立套接字对象 tcp_sock_server = socket.socket(socket.AF_INT,SOCK_STREAM) 绑定ip和端口 tcp_sock.bind(ip地址,端口号) 设置监听 tcp_sock.listen(5) 设置监听个数 等待客服端连接 tcp_sock.accept() 接收客服端数据 tcp_socket.recv(1024) 返回数据到客服端 tcp_socket.send('xx'.encode('utf-8')) 3,client 客服端 建立套接字对象 tcp_sock_client = socket.socket(socket.AF_INT,SOCK_STREAM) 连接服务端IP tcp_sock_client.connect(ip地址,端口号) 发送数据 tcp_sock_client.send('xx'.encode('utf-8')) 接收数据 tcp_sock_client.recv(1024)二,udp 类型 步骤: 1,导包 import socket 2,server 服务端 建立套接字对象 udp_sock_server =

py网络编程学习笔记

纵然是瞬间 提交于 2019-11-29 09:44:43
一、异常处理 异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在python中,错误触发的异常如下 而错误分为两种: 1、语法错误 语法错误即为SB错误 2、逻辑错误 逻辑错误有数据类型错误,取值错误等,都是自己逻辑混乱导致。 在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,一个异常标识一种错误 常用异常 1 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x 2 IOError 输入/输出异常;基本上是无法打开文件 3 ImportError 无法引入模块或包;基本上是路径问题或名称错误 4 IndentationError 语法错误(的子类) ;代码没有正确对齐 5 IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5] 6 KeyError 试图访问字典里不存在的键 7 KeyboardInterrupt Ctrl+C被按下 8 NameError 使用一个还未被赋予对象的变量 9 SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了) 10 TypeError 传入对象类型与要求的不符合 11 UnboundLocalError

命令备忘 ss

最后都变了- 提交于 2019-11-29 08:36:24
简介: Socket Statistics ( ss )命令类似于 netstat ,它用于显示各种有用的网络套接字信息。 长时间看,已经注意到 netstat 这个命令程序已经过时了。从而代替 netstat 的是 ss 命令。一个全新的 ss 命令使用起来必定有些陌生,不过 ss 许多选项与 netstat 使用的选项类似,但我们还会看到一些差异。 ss 命令是 Linux CentOS 7 中 iproute 软件包的一部分,默认已经安装。 一般来说,网络套接字是由IP地址,传输协议和端口来定义的。这种组合构成了双向连接的一个方面。例如:一个Web服务器可能正在侦听 172.28.204.62:80 上的传入TCP连接,这是套接字。不过需要说明的是套接字不是连接本身,而是连接的端点之一。 下面我讲解如何使用 ss 命令查看各种信息。具体使用语法如下: ss [options] [ FILTER ] 1.列出已建立的连接 默认情况下,如果我们运行 ss 命令而没有指定其他选项,它将显示所有已建立连接的打开的非侦听套接字的列表,例如 TCP , UDP 或 UNIX 套接字。 [root@renwolecom ~]# ss | head -n 5 Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port u

基于socket套接字low版ftp

吃可爱长大的小学妹 提交于 2019-11-29 08:31:45
server import socket import struct import json while True: soc = socket.socket() soc.bind(('192.168.31.233', 8001)) soc.listen(3) print('等待客户端连接') conn,addr=soc.accept() user = conn.recv(65535) user = str(user, encoding='utf8') pwd = conn.recv(65535) pwd = str(pwd, encoding='utf8') if user == 'admin' and pwd == '123': conn.send(b'true') print('有个客户端连接上了',addr,'登陆成功') while True: try: data=conn.recv(65535) data = str(data,encoding='utf8') if data: with open('D:\python\课程相关文件.zip','rb') as f: ##随便本地一个文件 data = f.read() dic={'size':len(data)} dic_bytes=(json.dumps(dic)).encode('utf-8') head_count

进阶版socket套接字ftp文件传输可并发

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-29 08:31:40
server import socketserver import json import struct class Mytcp(socketserver.BaseRequestHandler): def handle(self): try: while True: data_path = self.request.recv(1024) data = str(data_path,encoding='utf8') print(data_path) with open(data,'rb') as f: data = f.read() dic = {'size':len(data)} dic_b = bytes(json.dumps(dic).encode('utf-8')) obj = struct.pack('i',len(dic_b)) self.request.send(obj) self.request.send(dic_b) self.request.send(data) if len(data) == 0: return except Exception: pass if __name__ == '__main__': server = socketserver.ThreadingTCPServer(('127.0.0.1',8009),Mytcp) server

MFC- 网络编程

匆匆过客 提交于 2019-11-29 08:30:38
一、MFC网络编程 a)CAsyncSocket用于异步非阻塞类,用UDP通信; b)CAsyncSocket的子类(派生类);Csocket同步阻塞类,用于TCP通信; c)通信前,必须调用AfxSocketInit()进行初始化 二、CAsyncSocket类UDP通信 2.1 服务器端通信步骤: a)在.h文件中创建CAsyncSocket类对象; b)创建套接字CAsyncSocket::Create(); c)发送数据CAsyncSocket::SentTo(); d)关闭套接字CAsyncSocket::Close(); 2.2 MFC界面 2.3 代码实例: a)01_UDPServerDlg.h中添加CAsyncSocket对象 1 // 01_UDPServerDlg.h : 头文件 2 // 3 4 #pragma once 5 #include "afxcmn.h" 6 #include "afxwin.h" 7 8 9 // CMy01_UDPServerDlg 对话框 10 class CMy01_UDPServerDlg : public CDialogEx 11 { 12 // 构造 13 public: 14 CMy01_UDPServerDlg(CWnd* pParent = NULL); // 标准构造函数 15 16 // 对话框数据 17

进程间通讯IPC的几种方式的优缺点总结

走远了吗. 提交于 2019-11-29 02:42:14
Linux进程间的通讯 Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进程间通信方面的侧重点有所不同。前者对Unix早期的进程间通信手段进行了系统的改进和扩充,形成了“system V IPC”,通信进程局限在单个计算机内;后者则跳过了该限制,形成了基于套接口(socket)的进程间通信机制。Linux则把两者继承了下来,如图示: 管道 管道的通信介质是文件,这种文件通常称为管道文件,两个进程利用管道文件进行通信时,一个进程为写进程,另一个进程为读进程。写进程通过写端(发送端)往管道文件中写入信息;读进程通过读端(接收端)从管道文件中读取信息。两个进程协调不断地进行写、读,便会构成双方通过管道传递信息的流水线。 匿名管道pipe 匿名管道是半双工的,数据只能单向通信;需要双方通信时,需要建立起两个管道;只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程)。 命名管道fifo 不同于匿名管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存在于文件系统中。这样,即使与FIFO的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过FIFO相互通信(能够访问该路径的进程以及FIFO的创建进程之间),因此,通过FIFO不相关的进程也能交换数据。值得注意的是,FIFO严格遵循先进先出(first in first

就业DAY2_网络编程_tcp客户端及服务器

为君一笑 提交于 2019-11-29 02:25:13
from socket import * import socket def main(): # 创建tcp套接字 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 链接服务器 # tcp_socket.connect(("10.6.25.79", 8080)) server_ip = input("请输入需要链接服务器的IP:") server_port = int(input("请输入需要链接服务器的port:")) server_addr = (server_ip, server_port) tcp_socket.connect(server_addr) # 发送数据 send_data = input("请输入发送的数据:") tcp_socket.send(send_data.encode("gbk")) # 关闭套接字 tcp_socket.close() if __name__ == "__main__": main() from socket import * import socket def main(): # 买个手机-创建tcp套接字 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 插入手机卡-绑定

socket、web socket

守給你的承諾、 提交于 2019-11-29 00:47:59
WEB SOCKET: 说明:为 浏览器 提供双工异步通信,浏览器可以向服务端发送消息、服务端也可以向浏览器发送消息。 SOCKET: 说明:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。 建立网络通信连接至少要一对端口号(socket)。socket本质是 编程接口 (API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口; HTTP是轿车,提供了封装或者显示数据的具体形式 ; Socket是发动机,提供了网络通信的能力 。 一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座,就可以得到不同的服务。 Socket非常类似于电话插座。以一个国家级电话网为例,电话的通话双方相当于相互通信的2个进程,区号是它的 网络地址 ;区内一个单位的交换机相当于一台 主机 ,主机分配给每个用户的局内号码相当于Socket号。 任何用户在通话之前,首先要占有 一部电话机,相当于申请一个Socket ;同时要知道对方的号码,相当于 对方有一个固定的Socket 。然后向对方拨号呼叫,相当于发出连接请求(假如对方不在同一区内,还要拨对方区号,相当于给出网络地址)。 假如对方在场并空闲