发布网友 发布时间:2024-09-25 15:52
共1个回答
热心网友 时间:2024-10-03 05:23
导读:今天首席CTO笔记来给各位分享关于python函数socket的端口是多少的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
Socket连接时,端口是怎么分配的客户端连接socket的端口每个是唯一的,每个新的连接,端口号+1
从1024-65534
最大到65534然后再开始循环
中间遇到已经使用的端口就跳过
python中,如何将一个指定的文件发送到对方主机的指定端口呢(用socket方式)新手求指教!#发送端
#?-*-?coding:?utf-8?-*-
import?Tkinter
import?tkFileDialog
from?socket?import?*
import?struct
import?os
def?client(filename):
????Addr=('127.0.0.1',8000)
????BUFSIZE=2048
????Sendsocket=socket(AF_INET,SOCK_STREAM)
????Sendsocket.connect(Addr)
????FileHead=struct.pack('128s11i',filename,0,0,0,0,0,0,0,0,os.stat(filename).st_size,0,0)
????Sendsocket.send(FileHead)
????fp=open(filename,'rb')
????while?1:
????????FileData=fp.read(BUFSIZE)
????????if?not?FileData:?
????????????break
????????Sendsocket.send(FileData)
????fp.close()
????Sendsocket.close()
def?FileOpen():
????r?=?tkFileDialog.askopenfilename(title?=?'Python?Tkinter',??????
????????filetypes=[('All?files',?'*')]?)
????filename=r.split('/')
????client(filename[-1])
????????????????????????????????????????
root?=?Tkinter.Tk()
button1?=?Tkinter.Button(root,?text?=?'File?Open',?height=8,width=14,bg='blue',
????command?=?FileOpen)
button1.pack()
root.mainloop()
#接收端
#?-*-?coding:?utf-8?-*-
from?socket?import?*
import?os
import?struct
Addr=('127.0.0.1',8000)
BUFSIZE=1024
FileInfoSize=struct.calcsize('128s32sI8s')
SocketRecv=socket(AF_INET,SOCK_STREAM)
SocketRecv.bind(Addr)
SocketRecv.listen(5)
print?"waitting?........"
conn,addr=SocketRecv.accept()
print?"send?from"?,addr
FileHead=conn.recv(FileInfoSize)
filename,temp1,filesize,temp2=struct.unpack('128s32sI8s',FileHead)
print?filename,len(filename),type(filename)
print?filesize
filename='new_'+filename.strip('\00')
fp?=?open(filename,'wb')
restsize=filesize
while?1:
????????if?restsizeBUFSIZE:
????????????filedata=conn.recv(restsize)
????????else:
????????????filedata=conn.recv(BUFSIZE)
????????if?not?filedata:
????????????break
????????fp.write(filedata)
????????restsize=restsize-len(filedata)
????????if?restsize==0:break
fp.close()
conn.close()
SocketRecv.close()
print?'Finished?!!!'
Python的socket模块中的bindport中文端口,可以任意写,一般要写大于1000的,比如8080啥的。
python3.0socket区别区别:
1.首先介绍下socket
socket的英文原义是“孔”或“插座”。作为BSDUNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,像一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电,有的提供110伏交流电,有的则提供有线电视节目。客户软件将插头插到不同编号的插座,就可以得到不同的服务
2、连接原理根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。
(1)服务器监听:是服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
(2)客户端请求:是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
(3)连接确认:是指当服务器端套接字监听到或者说接收到客户端套接字的连接请求,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。
结语:以上就是首席CTO笔记为大家整理的关于python函数socket的端口是多少的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~