day7-简单socket例子

简述

根据前面的伪代码,我们进行客户端和服务端代码的编写,看看如何来实现

socket实例

服务器端流程逻辑图

服务端代码

import socket
#服务器端
server = socket.socket()
#绑定要监听的IP地址和端口,以元组(host,port)的形式表示地址
server.bind(("localhost",6969))
#监听TCP传入连接
server.listen()
print("我要接电话了")

#conn就是客户端连过来而在服务器端为其生成的一个连接实例
conn,addr = server.accept()
print(conn,addr)
print("电话来了")
#接收客户端发来的数据
data = conn.recv(1024)
print("recv:",data)
#发送数据到客户端
conn.send(data.upper())
#关闭服务器端
server.close()

#运行输出
我要接电话了
<socket.socket fd=272, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 6969), raddr=('127.0.0.1', 49946)> ('127.0.0.1', 49946)
电话来了
recv: b'hello world'

客户端流程逻辑图

客户端代码

import socket  #导入socket
#客户端

#声明socket类型,同时生成socket连接对象(实例)
client = socket.socket()
#连接远程机器,一般address的格式为元组(hostname,port)
client.connect(("localhost",6969))
#发送数据
client.send(b"hello world")
#接收服务器端数据
data = client.recv(1024)
print("recv:",data)
#关闭连接
client.close()

#运行输出
recv: b'HELLO WORLD'

注意

  1. 先启动服务端再运行客户端
  2. 客户端发起连接到服务端时,服务端接受连接并返回(conn,address),其中conn就是客户端连过来而在服务器端为其生成的一个连接实例,可以用来接收和发送数据,addr是连接客户端的地址。
  3. 在Python 3中发送的数据必须是字节bytes类型,否则报错,在Python 2中可以发送字符串或字节(bytes)!
posted @ 2017-11-07 09:21  Mr.hu  阅读(115)  评论(0编辑  收藏  举报