tcp严格区分客户端和服务器,udp不区分,收recvfrom 发sendto
服务器:玩游戏登录时先选择大区,即选择服务器,越近越不卡。提供服务的程序即服务器。
客户端:QQ软件、微信都是客户端,腾讯的服务器是服务器
tcp客户端流程:
1、创建套接字
2、链接服务器
3、收发数据
4、关闭套接字
命令:
终端中vim 04-tcp-client.py
命令:
如果vim后面忘记写文件名字,回车后开始写代码,Esc回到末行模式,wq保存退出,会提示没有文件名,末行输入w 空格 再写文件名 回车
q再退出,回到终端中可以通过cat 文件名查看刚刚文件中的内容
如果文件名中有括号,需要用反斜杠进行转义
vim打开文件进行写代码
命令: 如果想在光标所在行的上方插入一个空行,敲i进入编辑模式,敲大写的O;
在光标所在行的下方插入一个空行,按小写的o
思路:
用注释搭建流程框架
注意:
不要在文件夹中创建socket.py文件,这样import socket时是用不了的,导入的其实是自己手动建的socket.py,导入的顺序是先导入当前路径下的py,没有再导入系统的
import socket
def main():
# 1、创建tcp套接字
#2、链接服务器
#3、收发数据
#4、关闭套接字
if __name__ == "__main__":
main()
用代码补全
注意:
1、 创建套接字的时候不要用DGRAM,那是udp的套接字
2|、链接服务器是套接字.connect,括号内参数依然是一个元组,链接服务器的代码是由下往上倒着推写的,先确定需要一个元组,然后找变量等于这个元组,元组一个ip 一个port,分别是两个变量,从键盘获取,端口是数字,input获取记得int转化
3、发送数据:udp中是sendto, tcp中是send,send的参数只需要写发送的内容,不需要写对方的ip port
import socket
def main():
# 1、创建tcp套接字
tcp_socket = socket.socekt(socket.AF_INET,socket.SOCK_STREAM)
#2、链接服务器
#如果是绑定固定的服务器和端口,可以用下方一句代码替换下面四行代码
#tcp_socket.connet(("192.163.33.11",7890))
server_ip = input("请输入绑定服务器的ip:")
server_port = int(input("请输入绑定服务器的port:"))
addr = (server_ip,server_port)
tcp_socket.connet(server_addr)
#3、收发数据
send_data = input("请输入你要发送的内容:")
tcp_socket.send(send_data.encode("utf-8"))
#4、关闭套接字
tcp_socket.close()
if __name__ == "__main__":
main()