码迷,mamicode.com
首页 > 编程语言 > 详细

Python之socket编程

时间:2019-01-06 14:27:56      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:ip地址   serve   bin   技术分享   客户   oca   http   socket   分享图片   

先放个题外话,了解一下OSI七层网络模型,这里放一张网上的图

技术分享图片

再大致了解一下socket的基本概念:

       网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。它的工作方式是这样的
技术分享图片
了解了大致的工作方式,主要是怎么使用!
用socket编程时,需要做一个客户端和一个服务器端,我们先做个最简单的socket通讯模式
技术分享图片
 1 import socket
 2 server = socket.socket()
 3 server.bind((localhost,9999))
 4 server.listen()
 5 conn,addr = server.accept()
 6 print(conn,addr)
 7 print("开始")
 8 while True:
 9     data = conn.recv(1024)
10     print(data.decode())
11     conn.send(data.upper().encode())
12 server.close()
service端
技术分享图片
1 import socket
2 client = socket.socket()
3 client.connect((localhost,9999))
4 while True:
5     msg = input(>>>).strip()
6     client.send(msg.encode(utf-8))
7     data = client.recv(1024)
8     print("recv:",data.decode())
9 client.close()
client端

发送的data必须为byte的格式,(在python2中好像不太一样,忘记了!),所以要把数据encode成utf-8的格式(utf-8可以省略不写,是默认的)在收到数据后在decode一下就可以。

这里还要注意的是int格式的数据不能encode,可以先转换成str的格式。

都敲好以后,先运行service端,然后再运行client端,就可以试一试了!

调试好以后我们可以稍微来个复杂一点的,把服务器放在linux里,客户端就还在pycharm里。但是要把代码稍微改一改,先启动linux,ifconfig一下

技术分享图片

ip是192.168.75.130,把客户端的localhost改成这个ip地址,端口号不用换

技术分享图片
1 import socket
2 client = socket.socket()
3 client.connect((192.168.75.130,9999))
4 while True:
5     msg = input(>>>).strip()
6     client.send(msg.encode(utf-8))
7     data = client.recv(1024)
8     print("recv:",data.decode("utf-8"))
9 client.close()
client端-windows
技术分享图片
 1 import socket
 2 server = socket.socket()
 3 server.bind((0.0.0.0,9999))
 4 server.listen()
 5 conn,addr = server.accept()
 6 print(conn,addr)
 7 print("开始")
 8 while True:
 9     data = conn.recv(1024).decode()
10     print(data)
11     conn.send(data.upper().encode())
12 server.close()
service端-linux

技术分享图片

服务器端的ip地址要改成0.0.0.0

先后运行一下,OK

技术分享图片 

成功!!

 

 

Python之socket编程

标签:ip地址   serve   bin   技术分享   客户   oca   http   socket   分享图片   

原文地址:https://www.cnblogs.com/yinsedeyinse/p/10227282.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!