python SOCKET编程基础入门

一、UDP编程

1.客户端Client:发起访问的一方。

2.服务器端

3.server段编程

(1)建立socket,socket是负责具体通信的一个实例

(2)绑定,为创建的socket指派固定的端口和IP地址

(3)接受对方发送内容

(4)给对方发送反馈,此步骤为非必须步骤

4.Client端编程

(1)建立通信的socket

(2)发送内容到指定服务器

(3)接受服务器给定的反馈内容

5.模拟一下这个过程

(1)我们先建立一个服务器的函数

#服务器案例

import socket

​

#模拟服务器的函数

def serverFunc():

  #1.建立socket

  #socket.AF_INET:使用IPV4协议族

  #socket.SOCK_DGRAM:使用UDP通信

  sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

  #2.绑定ip和port

​

  #127.0.01:这个ip地址代表的是机器本身

  #7852:随机指定的端口号

  #地址是一个tuple类型,(ip.port)

  addr = ("127.0.0.1",7852)

  sock.bind(addr)

​

  #接受对方消息

  #等待方式为死等,没有其他可能性

  #recvfrom接受的返回值是一个元组,前一项表示数据,后一项表示地址

  #参数的含义是缓冲区大小

  #rst = sock.recvfrom(500)

  data,addr = sock.recvfrom(500)

​

  print(data)

  print(type(data))

​

  #发送过来的数据是bytes格式,必须通过解码才能得到str格式内容

  #decode默认参数是utf8

  text = data.decode()

  print(type(text))

  print(text)

​

  #给对方反馈的消息

  rsp = "I am very hungry now"

​

  #发送的数据需要编程成bytes格式

  #默认时utf8

  data = rsp.encode()

  sock.sendto(data,addr)

if __name__ == "__main__":

  print("Start Server")

  serverFunc()

print("End Server")

(2)然后创建一个客户端的函数

import socket

def clientFunc():

  sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

  text = "you are very cool"

​

  #发送的数据必须是bytes格式

  data = text.encode()

  #发送

  sock.sendto(data,("127.0.0.1",7852))

  data,addr =sock.recvfrom(200)

​

  data = data.decode()

  print(text)

​

if __name__ == "__main__":

  print("Start Client")

  clientFunc()

print("End Client")

(3)我们先启动服务器端函数

出现如下图像,它是创建了一个sock,然后自己绑定到127.0.0.1:7852,运行到sock.recvfrom(500)这里死等客户端发消息

(4)再启动客户端函数

出现如下发送编码后的​text内容到服务器(127.0.0.1:7852),服务器成功接收后返回you are cool这句话。

(5)我们再看服务器的函数那里

接受了bytes格式的字符串,并打印出来了,然后再解码打印出来,最后把you are cool返回​客户端。

(6)这里有个地方没有办法:因为我们在一台电脑上做的测试,所以相当于自言自语,​不如在两台电脑上进行试验。​

二、源码

D33_1_ServerProgramme.py

D33_2_ClientProgramme.py

https://github.com/ruigege66/Python_learning/blob/master/D33_1_ServerProgramme.py

https://github.com/ruigege66/Python_learning/blob/master/D33_2_ClientProgramme.py

以上就是python SOCKET编程基础入门的详细内容,更多关于python SOCKET编程的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python Socket编程详细介绍

    在使用Python做socket编程时,由于需要使用阻塞(默认)的方式来读取数据流,此时对于数据的结束每次都需要自己处理,太麻烦.并且网上也没找到太好的封装,所以就自己写了个简单的封装. 封装思路 1. 客户端每次请求均发送一个 SocketRequest 对象,其中封装具体的数据,这里使用json.对于要发送的数据,会自动添加一个结束符标识(EOF = '0x00'). 2. 服务器端接收数据时,根据结束符标识来生成完整的数据,并解包成 SocketRequest 对象. 3. 服务器端根据

  • 在Python中使用异步Socket编程性能测试

    OK,首先写一个python socket的server段,对开放三个端口:10000,10001,10002.krondo的例子中是每个server绑定一个端口,测试的时候需要分别开3个shell,分别运行.这太麻烦了,就分别用三个Thread来运行这些services. import optparse import os import socket import time from threading import Thread import StringIO txt = '''1111 2

  • 最基础的Python的socket编程入门教程

    本文介绍使用Python进行Socket网络编程,假设读者已经具备了基本的网络编程知识和Python的基本语法知识,本文中的代码如果没有说明则都是运行在Python 3.4下. Python的socket功能封装在socket库中,要使用socket,记得先import socket,socket库的详细介绍参见官方文档. 创建Socket 首先创建一个socket,使用socket库中得socket函数创建. import socket # create an INET, STREAM soc

  • Python的Socket编程过程中实现UDP端口复用的实例分享

    关于端口复用 一个套接字不能同时绑定多个端口,如果客户端想绑定端口号,一定要调用发送信息函数之前绑定( bind )端口,因为在发送信息函数( sendto, 或 write ),系统会自动给当前网络程序分配一个随机端口号,这相当于随机绑定了一个端口号,这里只会分配一次,以后通信就以这个随机端口通信,我们再绑定端口号的话,就会绑定失败.如果我们放在发送信息函数( sendto, 或 write )之前绑定,那样程序将以我们绑定的端口号发送信息,不会再随机分配一个端口号.实际上,默认的情况下,如果

  • Python Socket编程入门教程

    这是用来快速学习 Python Socket 套接字编程的指南和教程.Python 的 Socket 编程跟 C 语言很像. Python 官方关于 Socket 的函数请看 http://docs.python.org/library/socket.html 基本上,Socket 是任何一种计算机网络通讯中最基础的内容.例如当你在浏览器地址栏中输入 www.jb51.net 时,你会打开一个套接字,然后连接到 www.jb51.net 并读取响应的页面然后然后显示出来.而其他一些聊天客户端如

  • python多线程socket编程之多客户端接入

    Python中实现socket通信的服务端比较复杂,而客户端非常简单,所以客户端基本上都是用sockct模块实现,而服务 端用有很多模块可以使用,如下: 1.客户端 #!/usr/bin/env python #coding:utf-8 ''' file:client.py date:9/9/17 3:43 PM author:lockey email:lockey@123.com desc:socket编程客户端,python3.6.2 ''' import socket,sys HOST =

  • Python中基础的socket编程实战攻略

    在网络通信中socket几乎无处不在,它可以看成是应用层与TCP/IP协议簇通信的中间软件抽象层,是两个应用程序彼此进行通信的接口,并且把复杂的TCP/IP协议细节隐藏在接口之后.Python提供了socket模块,可以非常方便的进行socket编程. 创建一个server socket 使用socket方法创建一个新的socket,通常提供两个参数,第一个参数是address family, 第二个是socket type. #create an INET, STREAMing socket

  • Python Socket编程之多线程聊天室

    本文为大家分享了Python多线程聊天室,是一个Socket,两个线程,一个是服务器,一个是客户端. 最近公司培训,要写个大富翁的小程序,准备做个服务器版的,先练练手. 代码: #coding = utf-8 import socket import threading class UdpServer(threading.Thread): def __init__(self): threading.Thread.__init__(self) self.address = ('127.0.0.1'

  • python的socket编程入门

    Flask或者其他框架都是封装的比较完善,我们可以不去关注路由.SESSION等到底是怎么实现的,现在我们使用socket来实现一个带有注册.登录功能的To do网站,这样能对后端框架了解的稍微更深入一点(当然你也可以直接去看Flask源码). 主程序runserver.py代码如下: #!/usr/bin/env python # -*- coding:utf-8 -*- import socket from exts import Request from route import resp

  • Python基础教程之tcp socket编程详解及简单实例

    Python tcp socket编程详解 初学脚本语言Python,测试可用的tcp通讯程序: 服务器: #!/usr/bin/env python # -*- coding: utf-8 -*- import socket import threading import time def tcplink(sock, addr): print('Accept new connection from %s:%s...' % addr); sock.send(b'Welcome!!!'); whi

  • Python socket编程实例详解

    本文实例形式较为详细的讲述了Python socket编程.分享给大家供大家参考.具体如下: 复制代码 代码如下: sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 上面的代码创建了一个socket对象.type参数代表套接字类型,可为SOCK_STREAM(流套接字)和SOCK_DGRAM(数据报套接字).AF_INET表示创建的是ip v4的类型. 复制代码 代码如下: socket(address_family,type,proto

随机推荐