Socket TCP server
import socket
from pymysql import *
import threading
def mysql_select(server_mysql_name):
try:
conn = connect(
host="localhost",
port=3306,
user="root",
passwd="root",
db='tcp',
charset='utf8'
)
cursor = conn.cursor()
sqlstr = f"select * from tcp_to_write where name='{server_mysql_name}'"
cursor.execute(sqlstr)
result = cursor.fetchone()
cursor.close()
conn.close()
return '出生于' + str(result[3])
except Exception as e:
# print(e)
return '无此人'
def Server_send_rev(Socket_New_Server):
while True:
#7、接收客户端传递过来的字节,字节长度1024
Client_data = Socket_New_Server.recv(1024)
server_mysql_name = Client_data.decode('gbk')
#8、将传递过来的值带入mysql查询,返回查询结果
result = mysql_select(server_mysql_name)
#9、将查询结果值返回给客户端
Socket_New_Server.send(result.encode('gbk'))
#10、于while外部关闭字节套,有利于与客户端持续连接,否则客户端索取一次后关闭
Socket_New_Server.close()
def main():
#1、建立socket,family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None。默认IPV4,TCP
Socket_Server = socket.socket()
#2、Server端绑定IP
Socket_Server.bind(("127.0.0.1", 6001))
while True:
#3、监听客户端连入
Socket_Server.listen(128)
#4、为客户端建立新的Socket,便于后续其他排队的客户端连入
Socket_New_Server, Socket_Addr = Socket_Server.accept()
#5、配置多线程,target参数=方法,args参数=方法实参
th=threading.Thread(target=Server_send_rev,args=(Socket_New_Server,),daemon=True)
#6、多线程跑起来
th.start()
#Server_send_rev(Socket_New_Server)
if __name__ == '__main__':
main()
Socket TCP client
import socket
def client_send_rev(socket_client):
data_client = input("请输入传送内容:")
#3、发送数据给Server
socket_client.send(data_client.encode('gbk'))
#4、等待接收Server数据
data_server = socket_client.recv(1024)
print(f"{data_client}{data_server.decode('gbk')}")
def main():
#1、建立socket
socket_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_ip = "127.0.0.1"
server_port = 6001
#2、连接Server
socket_client.connect((server_ip, server_port))
while True:
client_send_rev(socket_client)
#5、关闭字节套
socket_client.close()
if __name__ == '__main__':
main()
Socket UDP
from socket import socket,AF_INET,SOCK_DGRAM
send_s=socket(AF_INET,SOCK_DGRAM)
send_s.bind(('',6001))
send_s.sendto(b'ABC',("192.168.96.130",6000))
send_s.close()
Because tcp uses connect to connect to the server, but UDP is not used, so when sending data, specify the other party's IP and port before sending