socket模块,创建TCP,迪士尼彩乐源码源码搭建 UDP服务器和客户端

迪士尼彩乐源码源码搭建

地址一:【hubawl.com】狐霸源码论坛

地址二:【bbscherry.com】车厘子源码论坛

套接字

socket模块

家族地址

套接字类型

创建TCP服务器

创建TCP客户端

执行TCP服务器和客户端

创建UDP服务器

创建UDP客户端

执行UDP服务器和客户端

常见的套接字对象方法和属性查询表

——————————

套接字:也叫通信端点

在任何类型的通信之前,网络应用程序必须创建套接字。

socket模块

要创建套接字,必须使用socket.socket()函数

语法:socket( family , type , protocol = 0 )

family:家族地址

type:套接字类型

protocol通常省略,默认为0

创建一个TCP/IP套接字:s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

创建一个UDP/IP的套接字:s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

家族名/地址家族:

AF_INET IPv4(默认)

AF_INET6 IPv6

AF_UNIX 只能够用于单一的Unix系统进程间通信

套接字类型:

SOCK_STREAM  创建TCP,面向连接

SOCK_DGRAM   创建UDP,无连接

创建TCP服务器

大概步骤:

1.引用套接字socket模块    from socket import *

2.创建套接字对象          socket('家族名','类型')

3.设置主机和端口          s.bind('地址')

4.设置启动监听器          s.listen()

5.服务器无限循环          while True:

6.等待客户端消息          t,add=s.accept()

7.接收客户端消息          t.recv('缓存大小')

8.向客户端发送消息        t.send('内容','要编码')

9.关闭服务器套接字        s.close()

1

2

3

4

5

6

7

8

9

创建TCP服务器示例:

          #创建TCP服务器[文件1.py]

from socket import *    #【引用套接字模块】要创建套接字(通信端点),必须使用socket模块

HOST=''                  #HOST变量是空白的,表示它可以使用任何可用的地址

PORT=50000              #端口号。端口号的范围是0-65535(小于1024的端口号预留给了系统),这里是随机的端口号

ADDR=(HOST,PORT)   

ds=socket(AF_INET,SOCK_STREAM)  #【创建套接字】(通信端点)对象,AF_INET是网络家族名字,SOCK_STREAM是套接字类型。socket是个类,ds是类的对象

ds.bind(ADDR)            #【设置好主机和端口】调用服务器套接字方法。将地址(主机名,端口号)绑定在套接字上。ADDR=(HOST,PORT),HOST是主机名,PORT是端口号对,这里bind后面只能接收一个参数,所以这样表达

ds.listen(5)            #【设置并启动TCP监听器】

while True:              #将服务器无限循环 

    print('开始接入')

    tsp,add=ds.accept()  #【等待客户端消息】被动接收TCP客户端连接,一直等待直到连接成功。这里的accept()方法调用后会返回两个参数分别赋值给tsp,add

    print('接入成功')

    a=tsp.recv(1024)    #【接收客户端消息】(注意:对象改变了)接收客户端的消息后赋值给变量a,将缓存区的大小设为1kb,可以根据网络性能和程序需要来改变这个容量。

    print(add)          #打印客户端的地址

    tsp.send(bytes('你好','utf-8'))  #【向客户端发送消息】(注意:对象),这里的字符串要转化为字节,不然计算机在传送的时候看不懂。字符串是给人看的,字节才是给计算机看的

ds.close()  #关闭

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

创建TCP客户端

大概步骤:

1.引用socket套接字模块    from socket import *

2.创建套接字对象          socket('家族名','类型')

3.向服务器发起连接        s.connect('地址')

4.通信循环                while True:

4.向服务器发消息          s.send('消息内容','要编码')

5.接收服务器返回的消息    s.recv('缓存区大小')

6.关闭客户端套接字        s.close()

1

2

3

4

5

6

7

创建TCP客户端示例:

                #创建TCP客户端[文件2.py]

from socket import *          #引用套接字模块的所有属性

addr=('192.168.0.100',50000)  #把主机名和端口赋值给变量addr

ds=socket(AF_INET,SOCK_STREAM) #创建套接字对象,设置好引用的家族名称和类型

ds.connect(addr)              #主动发起TCP服务器连接,要连接的服务器名和端口设置好

while True:                    #开始通信循环

    a=input('你好啊')          #客户端输入消息赋值给a

    ds.send(bytes(a,'utf-8'))  #将消息发送给服务器,这里要将你想要发送的消息转化为计算机看的懂的字节

    b=ds.recv(1024)            #接收服务器返回的消息赋值给b

    print(b.decode('utf-8'))    #将服务器的消息打印出来,因为返回来的消息是字节,所以要转化成你看的懂的字符串。

ds.close()   

1

2

3

4

5

6

7

8

9

10

11

12

13

这里你会发现只要是向服务器或者客户端发消息都需要编码为字节,方法bytes(‘str’,utf-8)。如果是要显示给自己看的都要将字节解码你才能认识,方法b.decode(‘utf-8’)。

执行TCP服务器和客户端

如果在本地电脑测试的话,把软件再多开一个进程,让客户端文件和服务器文件分开在两个软件进程上去执行

先运行服务器,再运行客户端

查看主机ip地址win+R,输入cmd,在命令框输入ipconfig,那个ipv4地址就是的。查看自己电脑的主机名,右击我的电脑,查看属性,你的计算机全名就是的

自己改一改,调试一下更加完整的代码

创建UDP服务器

UDP服务器不需要TCP服务器那么多的设置,因为它们不是面向连接的,除了等待传入的连接以外,几乎不需要做其他工作。套接字类型是SOCK_DGRAM

大概步骤:

1.引入模块            from socket import * 

2.创建服务器套接字    s=socket(AF_INET,SOCK_DGRAM)

3.绑定主机和端口      s.bind()

4.服务器无限循环      while True:

5.接收客户端消息      data,addr=s.recvfrom('缓存大小')

6.发送客户端消息      s.sendto('内容',addr)

7.关闭服务器          s.close()

1

2

3

4

5

6

7

8

创建UDP服务器示例:

              #创建UDP服务器

from socket import *          #【引用套接字模块】要创建套接字(通信端点),必须使用socket模块

HOST=''                      #HOST变量是空白的,表示它可以使用任何可用的地址

PORT=50000                    #端口号。端口号的范围是0-65535(小于1024的端口号预留给了系统),这里是随机的端口号

ADDR=(HOST,PORT)   

ds=socket(AF_INET,SOCK_DGRAM)  #【创建套接字】(通信端点)对象,AF_INET是网络家族名字,SOCK_STREAM是套接字类型。socket是个类,ds是类的对象

ds.bind(ADDR)                  #【设置并绑定好主机和端口】调用服务器套接字方法。将地址(主机名,端口号)绑定在套接字上。ADDR=(HOST,PORT),HOST是主机名,PORT是端口号对,这里bind后面只能接收一个参数,所以这样表达

while True:                    #将服务器无限循环 

    print('开始接入')


    data,addr=ds.recvfrom(1024)            #【接收客户端消息】接收客户端的消息和参数后赋值给变量a,将缓存区的大小设为1kb,可以根据网络性能和程序需要来改变这个容量。

    print(data.decode('utf-8'),addr)        #打印客户端的消息和地址

    ds.sendto(bytes('你好','utf-8'),addr)    #【向客户端发送消息和地址】,这里的字符串要转化为字节

ds.close()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

创建UDP客户端

大概步骤:

1.引用模块            from socket import *

2.创建客户端套接字    s=socket(AF_INET,SOCK_DGRAM)

3.发起服务器连接      s.connect(ADDR) 

4.通信循环            while True:

5.向服务器发送消息      s.sendto('内容',ADDR)

6.接收服务器返回的消息  comment,ADDR=s.recvfrom(缓存大小)

7.关闭客户端套接字      s.close()

1

2

3

4

5

6

7

创建UDP客户端示例:

                # 创建UDP客户端

from socket import *            #引用套接字模块

ADDR=('6MT9A4A9N7GLT5S',50000)  #把主机名和端口赋值给变量ADDR

ds=socket(AF_INET,SOCK_DGRAM)    #创建套接字对象,设置好引用的家族名称和类型

ds.connect(ADDR)                #主动发起TCP服务器连接,要连接的服务器名和端口设置好

while True:   

    a=input('你好啊')                    #客户端输入消息赋值给a

    ds.sendto(bytes(a,'utf-8'),ADDR)    #将消息发送给服务器,这里要将你想要发送的消息转化为计算机看的懂的字节

    b,ADDR=ds.recvfrom(1024)            #接收服务器返回的消息赋值给b

    print(b.decode('utf-8'),ADDR)        #将服务器的消息打印出来,因为返回来的消息是字节,所以要转化成你看的懂的字符串。

ds.close()                              #关闭客户端

1

2

3

4

5

6

7

8

9

10

11

12

13

执行UDP服务器和客户端

UDP服务器和客户端的执行方式与TCP相同。

常见的套接字对象方法和属性查询表

服务器端套接字函数

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容