# -*- coding: utf-8 -*-
from socket import *
HOST = 'localhost' #主机名
PORT = 9999 #端口号 与服务器一致
BUFSIZE = 1024 #缓冲区大小1K
ADDR = (HOST,PORT)
tcpCliSock = socket(AF_INET, SOCK_STREAM)
tcpCliSock.connect(ADDR) #连接服务器
while True: #无限循环等待连接到来
try:
data = raw_input('Client')
if not data:
break
tcpCliSock.send(data) #发送数据
data = tcpCliSock.recv(BUFSIZE) #接受数据
if not data:
break
print 'Server: ', data
except Exception,e:
print 'Error: ',e
tcpCliSock.close() #关闭客户端
# -*- coding: utf-8 -*-
from socket import *
from time import ctime
HOST = 'localhost' #主机名
PORT = 9999 #端口号
BUFSIZE = 1024 #缓冲区大小1K
ADDR = (HOST,PORT)
tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(ADDR) #绑定地址到套接字
tcpSerSock.listen(5) #监听 最多同时5个连接进来
while True: #无限循环等待连接到来
try:
print 'Waiting for connection ....'
tcpCliSock, addr = tcpSerSock.accept() #被动接受客户端连接
#print u'Connected client from : ', addr
while True:
data = tcpCliSock.recv(BUFSIZE) #接受数据
if not data:
break
else:
print 'Client: ',data
ss=raw_input('Server')
tcpCliSock.send(ss)
except Exception,e:
print 'Error: ',e
tcpSerSock.close() #关闭服务器
# -*- coding: cp936 -*-
import socket
if __name__ == '__main__':
# 创建套接字,AF_INET:ipv4,SOCK_STREAM:TCP协议
tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 和服务端连接
tcp_client_socket.connect(("服务器ip地址", 5555))
# 发送下载文件的请求
file_name = 'cs.txt'
# 个人在服务端和客户端都采用utf-8编码
file_name_data = file_name.encode("utf-8")
# 发送请求数据
tcp_client_socket.send(file_name_data)
# 把数据写入到文件里
with open("C:/Users/Administrator/Desktop/" + file_name, "a+") as file:
while True:
# 循环接收文件数据
file_data = tcp_client_socket.recv(1024)
# 只要接收到数据,就写入
if file_data:
file.write(file_data)
else:
print("服务端把数据发送完成并关闭了连接")
break
# 关闭套接字
tcp_client_socket.close()
# -*- coding: utf-8 -*-
import socket
import os
if __name__ == '__main__':
# 在这里我将os.path的默认路径进行了更改,改到了桌面
os.chdir("C:/study/class/")
# 创建tcp服务端套接字
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定端口号,ip地址不绑定
tcp_server_socket.bind(("", 5555))
# 程序结束,释放端口号,端口号复用
tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)
# 设置监听,把主动套接字变成被动套接字,服务端套接字只负责接收客户端的连接请求
tcp_server_socket.listen(128)
while True:
service_client_socket, ip_port = tcp_server_socket.accept()
print("客户端连接成功了:", ip_port)
# 接收客户端的请求信息
file_name_data = service_client_socket.recv(1024)
# 对二进制数据进行解码
file_name = file_name_data.decode("utf-8")
print(file_name)
# 判断文件是否存在
if os.path.exists(file_name):
# 文件存在
with open(file_name, "rb") as file:
# 读取文件数据
while True:
# 循环读取文件数据
file_data = file.read(1024)
#表示读到数据
if file_data:
# 然后把数据发送给客户端
service_client_socket.send(file_data)
else:
print("请求的文件数据发送完成")
break
else:
print("您请求下载的文件不存在")
# 终止和这个客户端服务
service_client_socket.close()
# 终止客户端连接请求服务, 服务端的套接字可以不用关闭
tcp_server_socket.close()
服务器端需要在指定目录下 写该文件,客户端不用先新建(使用的a+)
先运行服务器,再运行客户端