码迷,mamicode.com
首页 > 其他好文 > 详细

socket 套接字通信

时间:2019-12-05 22:39:30      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:通信   必须   port   http   int   end   异常   消息   imp   

一、什么是socket?
socket是一个模块, 又称套接字,用来封装 互联网协议(应用层以下的层)。

二、为什么要有socket?
socket可以实现互联网协议 应用层以下的层 的工作,提高开发效率。

三、怎么使用socket?
import socket
写socket套接字:

Client
Server
使用如下:client.py

‘‘‘
启动服务端后再启动客户端
‘‘‘
import socket

#1.买手机
client = socket.socket() #拿到一个手机对象

#2.拨号
client.connect((‘127.0.0.1‘,9527)) #客户端的ip和port必须与服务器一致

print(‘client is running‘)
#3.通信循环
#讲话给对方听
while True:

send_data = input(‘客户端>>>:‘)
client.send(send_data.encode(‘utf-8‘)) #只能发bytes类型
data = client.recv(1024)
if data.decode(‘utf-8‘) == ‘q‘:
break
if len(data) == 0:
break

print(data.decode(‘utf-8‘))

#4.断开连接
client.close()

server.py

‘‘‘
先启动套接字服务端
注意:
客户端先一次发送,服务端得先一次接受,再发送消息。
‘‘‘
import socket

#1.买手机
server = socket.socket() #拿到一个手机对象
# print(server) # server是用来收发链接请求,建立链接

#2.绑手机卡
server.bind((‘127.0.0.1‘,9527)) #0-65535 #本地回环地址 ---》‘127.0.0.1‘

#3.开机(半连接池)
server.listen(5) #同一时刻,最大请求数为5个 实际==6
print(‘sever is running‘)

#4.等待电话请求
#conn:指的是服务端往客户端的管道
conn,addr = server.accept() #(双向连接的套接字对象,存放客户端IP和端口的小元组)
# print(conn) #conn代表双向链接,用来收发链接

#5.循环实现可接受多个用户访问
while True:
#等待电话接入 --->接入客户端
# conn: 指的是服务端往客户端的管道
conn,addr = server.accpt()
print(addr)

#实现循环通信
while True:
try: #监听代码块是否有异常出现
# 接受对方讲话的内容
# data --->客户端发送过来的消息
data = conn.recv(1024) #1024接受的最大字节数bytes
if len(data) == 0:
break
if data.decode(‘utf-8‘) == ‘q‘:
break

print(data.decode(‘utf-8‘))
send_data = input(‘服务器>>>:‘)

#服务器往客户端发送消息
conn.send(send_data.encode(‘utf-8‘))
# 捕获异常信息,并打印 # e: 报错信息
except Exception as e:
print(e)
break

#6.挂电话连接
conn.close()
原文链接:https://blog.csdn.net/weixin_45816565/article/details/103410171

socket 套接字通信

标签:通信   必须   port   http   int   end   异常   消息   imp   

原文地址:https://www.cnblogs.com/zhangjinyi97/p/11991927.html

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