客户端:
import socket
client = socket.socket()#实例化出一个叫client的对象
client.connect(("localhost", 6969))#设置连接服务器的ip地址和端口
client.send(b"hello world")#只能send二进制的字符串,如果要传中文字符则编码成asic写成client.send("今天".encode("utf-8"))
data = client.recv(1024)#设置接收的字符串大小,单位为字节
print("recv:", data)
client.close()#关闭客户端
服务端:
import socket
server = socket.socket()#实例化一个服务端server
server.bind(("localhost", 6969))#绑定ip地址和端口
server.listen()#开始监听
print("开始等电话")
conn, addr = server.accept()#conn就是从客户端过来在服务端建立的一个连接实例
print(conn, addr)
print("电话来了")
data = conn.recv(1024)
print("recv", data)#若data里是中文字符串,则解码成utf-8的形式
conn.send(data.upper())
server.close()#服务端关闭
在pycharm打开这两个py文件时会报错10061代码
这是因为
Python Socket编程 [WinError 10061] 由于目标计算机积极拒绝,无法连接。
写python socket程序的时候,难免会遇到’ [WinError 10061] 由于目标计算机积极拒绝,无法连接。’这样的错误,出现这样的错误,有可能防火墙的防护,
在python的IDLE运行客户端和服务器的代码,出现这样的错误,是因为它们公用了同一个进程。
解决方案如下:
1、打开一个IDLE,运行服务器代码。
2、再打开一个IDLE,运行客户端代码。(注意:是重新打开一个IDLE窗口,而不是在第一步的IDLE窗口open打开)
这样就可以运行两个进程,进程间进行通信。因为定义是这样的:socket是同一计算机的进程间或者不同计算机之间的通信。
照这样就能解决问题。
最后client显示接收到:
server接收到的: