Ⅰ python 3socket.sendto函數怎麼寫
for i as byte=0 to 10 dim lab as new label lab.name="lab" & i lab.location=new point(0,i*20) lab.autosize= true lab.text=i panel1.controls.add(lab) next
Ⅱ 關於Python中socket問題。
HOST='localhost'#如果要兩台電腦遠程通訊,這里應該綁定什麼?
所謂host,就是主機地址。本地使用 'localhost' 會被映射為 '127.0.0.1'的,也就是本機。
不同主機相互通信呢?直接使用 區域網地址即可。比如 (本機)192.168.1.2 (其他電腦)192.168.1.3 然後本機做主機:HOST='192.168.1.2'
換句話說:客戶端的機器 必須能夠連接 主機。 在(其他電腦) "ping 192.168.1.2" 必須能ping通。
那麼 不在同一個區域網的怎麼辦?那就必須使用 外網IP了,或者域名。或者使用類似「花生殼」等軟體,進行主機映射也可以
Ⅲ Python TCP通訊發送Byte出現數據裡面多出一上字元是怎麼回事
txt="\x27\x88",這個是由兩個轉義字元構成的字元串。
txt.encode()會使用utf-8編碼方式將字元串編碼為位元組序列(bytes對象)。
utf-8編碼的話,txt.encode()會返回3位元組的位元組序列:b'\x27\xc2\x88',因為對於字元'\x88',用utf-8編碼後是2個位元組b'\xc2\x88'。
所以,接收到的自然是3個位元組的位元組序列b'\x27\xc2\x88'。
要解碼後才是原字元串,即:
b'\x27\xc2\x88'.decode()=='\x27\x88'的結果是True。
Ⅳ Python用socket傳輸文件,收到的文件大小不一樣,求解答,謝謝
1.電腦已經搭建python環境
2.深入到需要傳輸的文件目錄下,此處以分享 nemo-huiyuanfei 文件為例
3.在路徑欄輸入 cmd 按回車進入終端
4.輸入命令 python -m SimpleHTTPServer 8090 按回車 (埠號可以任意,不用必須為8090)
5.在區域網中任意瀏覽器輸入框輸入 文件所在主機 IP + Port 即可訪問此文件目錄並下載 ()
6.點擊需要下載的文件即可下載
7. 【注意】python3.X 的命令輸入為 python -m http.server 8090
Ⅳ python socket客戶端兩收發的線程,發的線程為什麼會阻塞收的縣城
第一個循環錯了。把第二個循環放在第一個循環裡面。accept完了就收發數據,循環收發。收發完了,關閉了,就回到accept的等待狀態
。
按你現在的邏輯是,accept完成後就一直等待,直到第二次accept
慢慢試驗。建議你accept完成後建立一個線程,單獨進行收發。
Ⅵ python的socket通信為什麼會出現積極拒絕
要在WEB上遠程管理客戶端軟體。那我們就仿路由器那種模式用SOCKET來解決吧。
做了個DEMO,本機測試OK,拿到別的機器上做伺服器,提示由於目標機器積極拒絕,無法連接。
查詢各種資料,有的說是埠沒開,有的說是服務沒開。
各種霧水啊!仔細一想,問題可能出在本機在區域網IP上,而不是用127.0.0.1。
更正代碼後,問題解決。下面演示伺服器端代碼的關鍵部分。
protected void Listen()
{MessageBox.Show("start listening");
stringip = "";
System.Net.IPHostEntryIpEntry = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName());
for (int i = 0; i != IpEntry.AddressList.Length; i++)
{if (!IpEntry.AddressList[i].IsIPv6LinkLocal)
{
ip= IpEntry.AddressList[i].ToString();
}
}
IPEndPointipend = new IPEndPoint(IPAddress.Parse(ip), 8000);
Socket sc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sc.Bind(ipend);
Socket acc;while (true)
{ sc.Listen(1);
acc= sc.Accept();
byte[] buff = new byte[1024];
intrecbyte = acc.Receive(buff, buff.Length, 0);if (recbyte == 0)break;
stringreciveval = "";
reciveval += Encoding.GetEncoding("gb2312").GetString(buff, 0, recbyte); string returnval = "開始升級";byte[] returnBy = Encoding.GetEncoding("gb2312").GetBytes(returnval);
acc.Send(returnBy, returnBy.Length, 0);}
acc.Close();
sc.Close();
}
public string sendMessage()
{
IPEndPointipend = new IPEndPoint(IPAddress.Parse("192.168.XXX.XXX"),8000);
Socket sc = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
sc.Connect(ipend); string message = "請升級軟體";byte[] bt = Encoding.GetEncoding("gb2312").GetBytes(message);
sc.Send(bt,bt.Length,0);
byte[] rebuff = new byte[1024];
intrecive = sc.Receive(rebuff, rebuff.Length, 0);
stringreturnval = "";
returnval += Encoding.GetEncoding("gb2312").GetString(rebuff, 0, recive);
sc.Close();returnreturnval;}
Ⅶ python socket 的rev函數怎麼接收位元組數組
import socketimport structsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect(('localhost', 10000))values = (1, 'ab', 2.7)packer = struct.Struct('I 2s f')packed_data = packer.pack(*values)try: sock.sendall(packed_data)finally: sock.close()有個模塊叫struct,可以自定義結構體,可以這樣發送代碼。
try: import cPickle as pickleexcept: import pickleclass AA(): def a(self): print "123"ddd = AA()data = pickle.mps(ddd)還有個模塊叫pickle,可以打包任何python對象,打包的結果也可以拿到套接字里發。
Ⅷ python socket發送字元串問題
python3中binary string 和 string不能合在一起
s.send("%s\r\n" %data)
Ⅸ python socket 做了一個傳文件的腳本 為什麼在IDLE里運行沒問題 但是雙擊直接打開就會抱錯
>>>如果你沒有在文件開頭# encoding: utf-8,idle裡面有設置默認編碼的
>>>如果是在windows下面,而你的編碼又是utf-8的話,那麼你雙擊運行,如果含有中文是會報錯的,因為windows(中文版本)的cmd的默認編碼是gbk的,這個當然會出錯了,所以解決辦法是將文件保存為gbk或者gb18030或者cp936,在文件開頭加上#_*_encoding:cp936_*_就可以了。
>>>如果是在linux下面的話,設置成utf-8的吧。
Ⅹ python socket 編程
位元組序 是一個處理器架構特性,用於指示像整數這樣的大數據類型內部的位元組如何排序。
大端 (bing-endian)位元組序,最大位元組地址出現在最低有效位元組(Least Significant Byte, LSB)上。
小端 (little-endian)位元組序,最低有效位元組包含最小位元組地址。
不管位元組如何排序,最高有效位元組(Most Signification Byte, MSB)總是在左邊,LSB總是在右邊。
對於TCP/IP協議棧使用 大端 位元組序。
有下面四個函數來轉換位元組序: