python socket发送总出错,不知道什么原因,希望大神解答
#-*-coding:utf-8-*-importTkinterimportsocketclassWindow():def__init__(self,root):labe...
# -*- coding: utf-8 -*-
import Tkinter
import socket
class Window():
def __init__(self,root):
label1 = Tkinter.Label(root,text = 'IP')
label2 = Tkinter.Label(root,text = 'Port')
label3 = Tkinter.Label(root,text = 'Data')
label1.place(x = 5, y = 5)
label2.place(x = 5,y = 30)
label3.place(x = 5,y = 55)
self.entryIP = Tkinter.Entry(root)
self.entryIP.place(x = 40,y = 5)
self.entryPort = Tkinter.Entry(root)
self.entryPort.place(x = 40,y = 30)
self.entryData = Tkinter.Entry(root)
self.entryData.place(x = 40,y = 55)
self.entryIP.insert(Tkinter.END,'127.0.0.1')
self.entryPort.insert(Tkinter.END,'1051')
self.entryData.insert(Tkinter.END,'hello world')
self.Recv = Tkinter.Text(root)
self.Recv.place(y = 105)
self.send = Tkinter.Button(root,text = '发送数据',command = self.Send)
self.send.place(x = 40,y = 80)
def Send(self):
try:
ip = self.entryIP.get()
port = int(self.entryPort.get())
data = self.entryData.get()
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect((ip,port))
client.send(data)
rdata = client.recv(1024)
self.Recv.insert(Tkinter.END,'Server:'+rdata+'\n')
client.close()
except:
self.Recv.insert(Tkinter.END,'发送错误\n')
root = Tkinter.Tk()
window = Window(root)
root.mainloop() 展开
import Tkinter
import socket
class Window():
def __init__(self,root):
label1 = Tkinter.Label(root,text = 'IP')
label2 = Tkinter.Label(root,text = 'Port')
label3 = Tkinter.Label(root,text = 'Data')
label1.place(x = 5, y = 5)
label2.place(x = 5,y = 30)
label3.place(x = 5,y = 55)
self.entryIP = Tkinter.Entry(root)
self.entryIP.place(x = 40,y = 5)
self.entryPort = Tkinter.Entry(root)
self.entryPort.place(x = 40,y = 30)
self.entryData = Tkinter.Entry(root)
self.entryData.place(x = 40,y = 55)
self.entryIP.insert(Tkinter.END,'127.0.0.1')
self.entryPort.insert(Tkinter.END,'1051')
self.entryData.insert(Tkinter.END,'hello world')
self.Recv = Tkinter.Text(root)
self.Recv.place(y = 105)
self.send = Tkinter.Button(root,text = '发送数据',command = self.Send)
self.send.place(x = 40,y = 80)
def Send(self):
try:
ip = self.entryIP.get()
port = int(self.entryPort.get())
data = self.entryData.get()
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect((ip,port))
client.send(data)
rdata = client.recv(1024)
self.Recv.insert(Tkinter.END,'Server:'+rdata+'\n')
client.close()
except:
self.Recv.insert(Tkinter.END,'发送错误\n')
root = Tkinter.Tk()
window = Window(root)
root.mainloop() 展开
1个回答
展开全部
错误提示发过来看看。从代码上看socket那一段。没有问题。最多有些小问题。但是发送应该是可以的。如果不放心可以
client.send(str(data))再试试看。
不过通常这个操作是异步的。点击send后,启动一个线程,由线程发送接收,线程将自己状态放在全局变量的数组里。
程序可以通过刷新显示全局变量里的状态,以揭示线程的工作进度。
client.send(str(data))再试试看。
不过通常这个操作是异步的。点击send后,启动一个线程,由线程发送接收,线程将自己状态放在全局变量的数组里。
程序可以通过刷新显示全局变量里的状态,以揭示线程的工作进度。
更多追问追答
追问
没有显示错误,我调试了一下
在client.connect((ip,port))处出错了
追答
这个地方出错就说明服务端的端口有问题,你在检查一下服务端,
它是否bind到了0.0.0.0这个地址上。
服务端的防火墙或者是iptable有没有阻拦外面访问
你们是否在一个网段,或者是路由是否可到达
应该与客户端关系不大。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询