一、套接字 socket

1.1 作用:实现不同主机间的进程间通信(不同电脑、手机等设备之间收发数据)

1.2 分类:udp、tcp

1.3 创建 socket

 import socket
socket.socket(AddressFamily, Type)

  AddressFamily:AF_INET:用于网络间进程通信;AF_UNIX:用于同一台机器中

  Type:SOCK_DGRAM:upd 协议使用;SOCK_STREAM:tcp 协议使用

二、upd socket

2.1 创建 udp socket,并使用其收发数据

 import socket

 # 创建 udp 套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 绑定本地信息,bind后面的()里一定要是个元组!!元组!!
udp_socket.bind(("", 7890)) # 获取要发送的内容
send_msg = input("请输入要发送的内容:") # 使用 udp 发送数据,
udp_socket.sendto(send_msg.encode("utf-8"), ("192.168.xxx.xxx", 9090)) # 接收数据,1204表示一次最多接收1024个字节
recv_data = udp_socket.recvfrom(1024)
recv_msg = recv_data[0] # 所接收的数据内容
recv_addr = recv_data[1] # 远程地址 # 打印远程发送来的信息
# 如果是从 windows 发来的数据要用 gbk解码
print(str(recv_addr) + ":" + recv_msg.decode("gbk")) udp_socket.close()

三、tcp socket

  tcp 套接字分为服务器和客户端

3.1 创建  socket,无论客户端和服务器都要写

1 import socket
2
3 # 创建 tcp 的套接字
4 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
5
6 # 关闭套接字
7 tcp_socket.close()

 

3.2 创建 tcp 客户端 socket,并使用其收发数据

 import socket

 # 创建套接字
tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 连接服务器(!!!区分udp)
tcp_client_socket.connect(("192.168.0.102", 7891)) # 获取要发送的信息
send_msg = input("请输入要发送的信息:") # 发送信息
tcp_client_socket.send(send_msg.encode("utf-8")) # 接收返回来的数据
recv_msg = tcp_client_socket.recv(1024) tcp_client_socket.close()

3.3 创建 tcp 服务器 socket,并使用其收发数据即:(即:为客户端服务)

 import socket

 # 创建套接字
tcp_ser_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 绑定本地信息
tcp_ser_socket.bind(("", 7890)) # 变为被动监听套接字(listen)
tcp_ser_socket.listen(128) # 等待客户端的链接(accept)
client_socket, client_addr = tcp_ser_socket.accept() # 为链接来的客户端服务,接收客户端发来的数据
recv_data = client_socket.recv(1024) # 返回数据给客户端,不用再写客户端的地址端口
# client_socket.send("hhhhhh".encode("utf-8"),client_addr)
client_socket.send("hhhhhh".encode("utf-8")) # 关闭套接字
client_socket.close() # 关闭服务器方打开的客户端的套接字
tcp_ser_socket.close() # 一般不关,关了怎么服务

挥手握手待补充

【本文仅作为学习笔记】

python | 网络编程(socket、udp、tcp)的更多相关文章

  1. python网络编程(Socket、TCP、UDP)

    Socket 是网络编程的一个抽象概念,通常我们用一个Socket表示 "打开了一个网络链接",而打开一个Socket 需要知道目标计算机的IP 地址和端口号,再指定协议类型即可. ...

  2. Python网络编程02 /基于TCP、UDP协议的socket简单的通信、字符串转bytes类型

    Python网络编程02 /基于TCP.UDP协议的socket简单的通信.字符串转bytes类型 目录 Python网络编程02 /基于TCP.UDP协议的socket简单的通信.字符串转bytes ...

  3. java网络编程socket\server\TCP笔记(转)

    java网络编程socket\server\TCP笔记(转) 2012-12-14 08:30:04|  分类: Socket |  标签:java  |举报|字号 订阅     1 TCP的开销 a ...

  4. 网络编程Socket之TCP之close/shutdown具体解释(续)

    接着上一篇网络编程Socket之TCP之close/shutdown具体解释 如今我们看看对于不同情况的close的返回情况和可能遇到的一些问题: 1.默认操作的close 说明:我们已经知道writ ...

  5. Day07 - Python 网络编程 Socket

    1. Python 网络编程 Python 提供了两个级别访问网络服务: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口 ...

  6. Python网络编程socket

    网络编程之socket 看到本篇文章的题目是不是很疑惑,what is this?,不要着急,但是记住一说网络编程,你就想socket,socket是实现网络编程的工具,那么什么是socket,什么是 ...

  7. python网络编程socket编程(TCP、UDP客户端服务器)

    摘录 python核心编程 使用socket()模块函数创建套接字——通信端点 >>> from socket import * >>> tcpSock = soc ...

  8. IPv6下网络编程socket, TCP和UDP例子,以及兼容IPV4和IPV6的类

    一.TCP socket ipv6与ipv4的区别 服务器端源代码如下: #include <stdio.h> #include <stdlib.h> #include < ...

  9. python网络编程--socket,网络协议,TCP

    一. 客户端/服务端架构(用到网络通信的地方) 我们使用qq.微信和别人聊天,通过浏览器来浏览页面.看京东的网站,通过优酷.快播(此处只是怀念一下)看片片啥的等等,通过无线打印机来打印一个word文档 ...

  10. python网络编程-socket编程

     一.服务端和客户端 BS架构 (腾讯通软件:server+client) CS架构 (web网站) C/S架构与socket的关系: 我们学习socket就是为了完成C/S架构的开发 二.OSI七层 ...

随机推荐

  1. Q&A in 2018 - Q2

    How to zip a file for Windows? 压缩一个文件: makecab c:/file_name.txt c:/file_name.zip 解压一个文件: expand c:/f ...

  2. Docker实战部署JavaWeb项目-基于SpringBoot

    最近在滴滴云上看到服务器很便宜,1核2G,1年只需要68块钱.下面是我基于Docker部署Javaweb服务的过程.目前我见过的最便宜的服务器,阿里云打折的时候都没有这么便宜啊,果断入手.有需要的话可 ...

  3. AOP配置步骤(XML)

    1.maven依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...

  4. LOJ #2831. 「JOISC 2018 Day 1」道路建设 线段树+Link-cut-tree

    用 LCT 维护颜色相同连通块,然后在线段树上查一下逆序对个数就可以了. code: #include <cstdio> #include <algorithm> #inclu ...

  5. CSS3之border-image的使用

    最近,我在项目开发中遇到这样的问题. 要给这个tab的底部的蓝线左右加上圆角. 然而,这个元素实际如上图所示,只是active的时候加了个underline的类,蓝线并没有单独的html. 若给这个s ...

  6. Pikachu-Sql Inject(SQL注入)

    在owasp发布的top10排行榜里,注入漏洞一直是危害排名第一的漏洞,其中注入漏洞里面首当其冲的就是数据库注入漏洞.一个严重的SQL注入漏洞,可能会直接导致一家公司破产!SQL注入漏洞主要形成的原因 ...

  7. Parity game POJ - 1733 带权并查集

    #include<iostream> #include<algorithm> #include<cstdio> using namespace std; <& ...

  8. git pull报错you do not have permission to pull from the repository

    you do not have permission to pull from the repository解决方法   使用git进行项目的版本管理,换了台电脑,配置了账号和邮箱后,pull一个项目 ...

  9. redis看这一篇就够了

    redis的下载安装 准备相关依赖 yum install gcc 下载安装包 # 切换到存放安装包到目录 cd /usr/local # 下载安装包 wget http://download.red ...

  10. java学习笔记之反射—反射和工厂模式

    简单工厂模式又称为静态工厂方法模式,它是由工厂对象来决定要创建哪一种类的实例化对象. 静态工厂代码: class Factory{ private Factory() {} public static ...