Python中文
首页
教程
问答
标签
搜索
登录
注册
通过局域网与C#到/从Python发送/接收文件
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我对Python开发还不熟悉,需要一些帮助。在</p> <p>我有一个<a href="https://en.wikipedia.org/wiki/Raspberry_Pi#Specifications" rel="nofollow">Raspberry Pi B+</a>,我正计划用它作为家庭用品的控制器(比如在设定的时间打开一个泳池水泵)。我对C很熟悉,我想知道是否有一种方法可以编写一个在笔记本电脑上运行的C用户界面,并通过LAN将XML文件形式的数据发送给Raspberry Pi,告诉Pi该怎么做。我用C编写了一些代码,用Python编写了一些代码,试图发送和接收文件,但到目前为止,我的测试都没有成功。在</p> <p>我在Raspberry Pi上有一些用Python编写的基本代码,用于控制一些GPIO管脚,我想知道这样的连接是否可行,是否也应该将Python代码重写成C。在</p> <p>这是我的C#send file函数</p> <pre><code>public void SendFile(string fileName) { try { string IpAddressString = piIP; IPEndPoint ipEnd_client = new IPEndPoint(IPAddress.Parse(IpAddressString), portnumber); Socket clientSock_client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP); string filePath = ""; fileName = fileName.Replace("\\", "/"); Console.WriteLine(fileName); while (fileName.IndexOf("/") > -1) { filePath += fileName.Substring(0, fileName.IndexOf("/") + 1); fileName = fileName.Substring(fileName.IndexOf("/") + 1); } byte[] fileNameByte = Encoding.UTF8.GetBytes(fileName); if (fileNameByte.Length > 5000 * 1024) { Console.WriteLine("File size is more than 5Mb, please try with small file."); return; } Console.WriteLine("Buffering ..."); string fullPath = filePath + fileName; byte[] fileData = File.ReadAllBytes(fullPath); byte[] clientData = new byte[4 + fileNameByte.Length + fileData.Length]; byte[] fileNameLen = BitConverter.GetBytes(fileNameByte.Length); fileNameLen.CopyTo(clientData, 0); fileNameByte.CopyTo(clientData, 4); fileData.CopyTo(clientData, 4 + fileNameByte.Length); Console.WriteLine("Connection to server..."); clientSock_client.Connect(ipEnd_client); Console.WriteLine("File sending..."); clientSock_client.Send(clientData, 0, clientData.Length, 0); Console.WriteLine("Disconnecting..."); clientSock_client.Close(); Console.WriteLine("File [" + fullPath + "] transferred."); } catch (Exception ex) { if (ex.Message == "No connection could be made because the target machine actively refused it") Console.WriteLine("File Sending fail. Because server not running."); else Console.WriteLine("File Sending fail. " + ex.Message); return; } connected = true; return; } </code></pre> <p>这是我的Python接收文件函数</p> ^{pr2}$ <p>同样,到目前为止,我甚至无法在两个设备之间建立连接。我是否应该重新开始使用Pi并尝试使用C而不是Python?还是我错过了什么?我已经给这两个设备一个静态IP地址,并硬编码了两台机器上的IP地址。在</p> <p>编辑: 这是我从C得到的控制台和stacktrace:</p> <pre><code>Buffering ... Connection to server... A first chance exception of type 'System.Net.Sockets.SocketException' occurred in System.dll File Sending fail. No connection could be made because the target machine actively refused it 10.51.21.199:8080 at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress) at System.Net.Sockets.Socket.Connect(EndPoint remoteEP) at App1.Stuffs.SendFile(String fileName) in ...Projects\App1\App1\Stuffs.cs:line 308 The thread '<No Name>' (0x1684) has exited with code 0 (0x0). </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>我有两种方法可以从Windows PC访问我的Raspberry Pi。第一种是在PC上安装Putty connection manager之后,输入RPi IP地址会在PC上生成一个终端窗口,从中我可以执行RPi程序。在</p> <p>在我的例子中,RPi连接到一个Windows工作组,映射为drive T:。我的C程序可以使用它在RPi上创建文件以进行写入或读取。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
我想从用户inpu创建一个类的实例
2 回答
我想从用户导入值,为此
6 回答
我想从用户那里得到一个整数输入,然后让for循环遍历该数字,然后调用一个函数多次
2 回答
我想从用户那里收到一个列表,并在其中执行一些步骤,然后在步骤完成后将其打印回来,但它没有按照我想要的方式工作
6 回答
我想从用户那里获取输入,并将值传递给(average=dict[x]/6),然后在那里获取resu
5 回答
我想从第一个列表中展示第一个词,然后从第二个列表中展示十个词,以此类推- Python
5 回答
我想从第一个空lin开始解析文本文件
2 回答
我想从简历、简历中提取特定部分
5 回答
我想从给定字典(python)的字符串中删除\u00a9、\u201d和类似的字符。
1 回答
我想从给定的网站Lin下载许多文件扩展名相同的Wget或Python文件
6 回答
我想从网上搜集一些关于抵押贷款的数据
3 回答
我想从网站上删除电子邮件地址
7 回答
我想从网站上读取数据该网站包含可下载的文件,然后我想用python脚本把它发送给oracle如何?
1 回答
我想从网站中提取数据,然后将其显示在我的网页上
5 回答
我想从网页上提取统计数据。
3 回答
我想从网页上解析首都城市,并在用户输入国家时在终端上打印它们
5 回答
我想从色彩图中删除前n个颜色,而不丢失原始颜色数
1 回答
我想从课堂上打印字典里的键
6 回答
我想从费用表中获取学生上次支付的费用,其中学生id=id
5 回答
我想从较低的顺序对多重列表进行排序,但我无法在一行中生成结果
6 回答