python入门之简单socket

TCP

  • Server
from socket import *
HOST = "127.0.0.1"
PORT = 12345
ADDR = (HOST, PORT)

server = socket (AF_INET, SOCK_STREAM)
server.bind (ADDR)
server.listen (5)
print ("start listen...")

client, addr = server.accept ()
print ("accept a connection from %s" % str (addr))
data = client.recv (1024)
if not data:
    print ("there is no data")
    print ("exit the server process")
    exit ()
print ("received a msg from client : %s" % str (data, encoding = "utf-8"))
client.send (bytes ("Server received.", encoding = "utf8"))

client.close ()
exit ()
  • Client
from socket import *
HOST = "127.0.0.1"
PORT = 12345
ADDR = (HOST, PORT)

client = socket (AF_INET, SOCK_STREAM)
client.connect (ADDR)
client.send (bytes ("hehe", encoding = "utf8"))
data = client.recv (1024)
print ("Receive data : %s" % str (data, encoding = "utf-8"))
print ("close socket")

client.close ()
exit ()

说明:

  1. 必须用from socket import *,不能用import socket
  2. 使用print ()函数时,可以用 print (“xxx %s” % m_str)格式化输出字符串,也可以用 print (“xxx”, m_str) 连接多个字符串
  3. 程序中 addr 是一个tuple,不能在 print 中这样写:print ("xxx %s" % addr),会报错的。可以这样写:print ("xxx %s" % str (addr))
  4. 调用 send () 函数时,必须把要发送的字符串转换成 bytes 格式才能发送。注意在使用 bytes () 函数的时候,编码时写utf8,解码时写utf-8,有一个短横杠的区别。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值