网络编程,即不同网络中电脑之间的数据通信。网络编程主要有两种方式UDP数据报协议和TCP数据流协议。UDP协议是一种无连接的数据传输协议,特点就是:速度快,无需连接,
可以进行广播消息。TCP是一种较安全的面向连接的传输协议,其需要通信双方建立连接(三次握手过程),关闭时四次挥手的通信方式,在网络传输中应用较方便,其数据较安全,因
数据进行检验和超时重传,不会发生数据丢失,或者数据错乱现。
1.IPV4,IPV6,TCP,UDP,HTTP,FTP等概念的涵义
ip协议属于网络层的协议,
IPV4 :互联网协议第4版,IPV6是v4的下一代,其ip长度128位。
tcp/udp是传输层的协议,
http是应用层的协议
FTP是文件传输协议,基于tcp。
2.使用tcp创建文件传输的服务器和客户机程序:
服务器程序:
#思路:客户端建立连接后,输入文件名,服务器进行传输,传输完毕后,关闭连接
#难点:采用多线程方法建立多任务,对每一连接建立传输线程。
import socket,os,threading
def sendfile(new_ss):
while 1:
data=new_ss.recv(1024)
if os.path.exists(data.decode()):
with open(data.decode(), "r", encoding="utf-8") as file:
for line in file.readlines():
data1 = new_ss.send(line.encode())
print(" the task is finished ")
else:
new_ss.send("False,the file is not existed".encode())
print(" the server is over")
new_ss.close()#接收完毕,关闭服务
break
if __name__ == '__main__':
ss = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
ss.bind(("",8080))
ss.listen(128)
while 1:
new_ss,ip_port=ss.accept()
print("receive a task from ",ip_port)
threading.Thread(target=sendfile, args=(new_ss,)).start()
print(threading.enumerate())
客户端程序:
import socket
ss=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ss.connect(("127.0.0.1",8080))#服务器的地址
file_name=input("please input the file name:")
ss.send(file_name.encode())
#with open("/home/python/Desktop/"+file_name,"w",encoding="utf-8") as file:
with open("2" + file_name, "w", encoding="utf-8") as file:
while 1:
data=ss.recv(1024)
if data:
if data.decode()=="False,the file is not existed":
data1=data.decode()
print(data1)
break
else:
file.write(data.decode())
else:
print("the file has been accepted")
break
ss.close()
队列,网络队列,管道,socket总结,同步,异步,并行,并发
同步:按照顺序逐个运行异步:同时进行,没有执行顺序并发:任务数大于内核数,只能轮流执行并行:任务数小于内核数,可行同时运行任务
来源:oschina
链接:https://my.oschina.net/u/4394215/blog/3535046