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

基于tcp的socket通信

时间:2018-10-04 14:08:12      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:监听   net   sock   指定   sep   socket通信   inet6   add   byte   

技术分享图片

# socket
    # socekt是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,socket其实就是一个门面模式,它
    # 把复杂的tcp/ip协议族隐藏在socket接口后面,对用户来说,一组简单的接口就是全部,让socket去组织数据,以符合指定的协议

# socket
    # 基于文件类型的套接字家族(一般不用)
        # 套接字家族的名字:AF_UNIX
        # unix一切皆文件、基于文件的套接字调用的就是底层的文件系统来取数据,两个套接字进程运行在同一个机器上,可以通过访问同一个文件系统间接完成通信

    # 基于网络类型的套接字家族
        # 套接字家族的名字:AF_INET(代表IPV4),常用
        # 还有AF_INET6被用于IPV6

 

  server.py

import socket

sk = socket.socket()     # 创建一个socket
#sk.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1) # 避免服务重启的时候报address already in use。加上这个解决
sk.bind((127.0.0.1, 8080))    # 绑定,接收的参数是一个元组
sk.listen()      # 监听

conn, addr = sk.accept()     # 阻塞等待别客户端链接,客户端链接上来后得到其链接符与目标ip地址

# print(conn, addr)

ret = conn.recv(1024) # 接收客户端数据

print(ret.decode(utf-8))  # 解码显示

str = 你好
# conn.send(str.encode(‘utf-8‘)) # 给客户端发送数据,在网路上只能传输bytes类型,也就是二进制
# conn.send(b‘hello client‘)
conn.send(bytes(你好, encoding=utf-8))

conn.close()    # 关闭与客户端的链接
sk.close()  # 关闭socekt

  client.py

import socket

sk = socket.socket()    # 创建socket

sk.connect((127.0.0.1, 8080))    # 客户端发起链接

str = 你好服务端

#sk.send(str.encode(‘utf-8‘))    # 编码发送
#sk.send(bytes(‘你好服务端‘, encoding=‘utf-8‘))
sk.send(bytes(你好服务端.encode(utf-8)))

ret = sk.recv(1024)
print(ret.decode(utf-8))  # 解码

sk.close()

 

基于tcp的socket通信

标签:监听   net   sock   指定   sep   socket通信   inet6   add   byte   

原文地址:https://www.cnblogs.com/whylinux/p/9742107.html

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