'''功能:python实现客户端与服务端数据传输日期:2018.9.4作者:SnowKing'''clientdefsock_client_data():whileTrue:try:s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.connect(('192.168.20.1',6666))#服务端和客户端在不同系统或不同主机下使用的ip和端口,先查看网卡的ip服务器所在的系统#s.connect(('127.0.0.1',6666))#服务器和客户端在同一系统下时使用的ip和端口exceptsocket.errorasmsg:print(msg)print(sys.exit(1))data=input("inputdata:")#输入要传输的数据s.send(data.encode())#发送要传输的数据编码,如果是字符数据,它必须被编码sends.close()if__name__=='__main__':sock_client_data()serverdefsocket_service_data():try:s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.setsockopt(socket.SOL_SOCKET,套接字。SO_REUSEADDR,1)s.bind(('127.0.0.1',6666))#在同一主机的ip下使用测试ip进行通信#s.bind(('192.168.20.1',6666))#在不同的主机上或者使用实际的ips.listen(10)除了socket.error在同一主机的不同系统中msg:print(msg)sys.exit(1)print("等待连接............")whileTrue:sock,addr=s.accept()buf=sock.recv(1024)#receivedatabuf=buf.decode()#decodeprint("Thedatafrom"+str(addr[0])+"is"+str(buf))print("Successfully")#returnbuf#sock.close()if__name__=='__main__':socket_service_data()运行结果:client:server:说明:1.server和client在同一物理主机的同一系统下使用127.0.0.1,端口自己设置,只要没被占用,在linux系统命令sudonetstat-nap|下查看端口是否被占用grep6666找不到端口,证明端口没有被占用创建两个.py文件,一个是sender.py,存放客户端程序,一个是recieve.py,存放服务端程序,先运行服务端程序,连接成功后运行客户端程序,输入要传输的数据,在服务器端看到传输的数据即表示传输成功。2、服务端和客户端在同一个物理主机的不同系统下,使用服务端系统的实际ip地址。笔者使用windows作为客户端,linux作为服务端,在linux终端输入ifconfig查看ip。两个程序使用相同的ip和端口,将两个程序部署到各自的系统中,先运行服务端程序,再运行客户端程序,发送数据,等待服务端数据接收成功。
