c#_使用Socket获取IP地址

Socket socket = new Socket( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp )

( ( IPEndPoint )socket.LocalEndPoint ).Address = 本地IP地址
( ( IPEndPoint )socket.RemoteEndPoint ).Address = 远程IP地址。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 Socket 发送两张图片的过程大致分为以下几个步骤: 1. 建立 Socket 连接; 2. 在 Socket 连接上发送第一张图片; 3. 等待第一张图片发送完成; 4. 在 Socket 连接上发送第二张图片; 5. 等待第二张图片发送完成; 6. 关闭 Socket 连接。 下面是一个示例代码,用于在 C#使用 Socket 连续发送两张图片: ```csharp using System; using System.IO; using System.Net; using System.Net.Sockets; class Program { static void Main(string[] args) { byte[] image1 = File.ReadAllBytes("image1.jpg"); byte[] image2 = File.ReadAllBytes("image2.jpg"); string host = "yourhost.com"; // 替换成您自己的主机名或 IP 地址 int port = 12345; // 替换成您自己的端口号 using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)) { socket.Connect(host, port); SendImage(socket, "image1.jpg", image1); WaitForSendComplete(socket); SendImage(socket, "image2.jpg", image2); WaitForSendComplete(socket); } } static void SendImage(Socket socket, string filename, byte[] data) { byte[] filenameBytes = System.Text.Encoding.UTF8.GetBytes(filename); byte[] header = new byte[4 + filenameBytes.Length]; header[0] = (byte)'I'; header[1] = (byte)'M'; header[2] = (byte)'G'; header[3] = (byte)filenameBytes.Length; Array.Copy(filenameBytes, 0, header, 4, filenameBytes.Length); byte[] packet = new byte[header.Length + data.Length]; Array.Copy(header, 0, packet, 0, header.Length); Array.Copy(data, 0, packet, header.Length, data.Length); socket.Send(packet); } static void WaitForSendComplete(Socket socket) { byte[] buffer = new byte[1024]; int bytesReceived = socket.Receive(buffer); string response = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesReceived); } } ``` 这段代码使用了自定义的协议来发送图片。首先,发送方会将每张图片的文件名和数据组合成一个包,然后将包发送到接收方。接收方在接收到每个包后,会先读取包头中的文件名信息,然后将文件名和数据保存到本地磁盘上。 在本示例代码中,发送方使用了 `SendImage` 方法来发送图片,该方法会将文件名和数据组合成一个包,然后调用 `Socket.Send` 方法来发送整个包。发送方还使用了 `WaitForSendComplete` 方法来等待图片发送完成的响应。接收方在收到每个包后,会先读取包头中的文件名信息,然后将文件名和数据保存到本地磁盘上。 请注意,这段代码仅仅是一个示例,实际应用中您需要根据自己的需求进行修改和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值