如何解决正在获取请求的地址在其上下文中无效在我的聊天应用程序中
所以我正在用C#编写一个聊天应用程序,这是一个控制台应用程序,用户可以在其中键入收件人的IPV4地址。但是问题是,当绑定IP地址时,消息将来自而不是来自本地主机的消息。
Message =所请求的地址在其上下文中无效。 Source = System.Net.Sockets
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;
namespace SimpleTcpSrvr
{
class Program
{
static void Main(string[] args)
{
Console.OutputEncoding = Encoding.UTF8;
int recv;
byte[] data = new byte[1024];
Console.WriteLine("You will need to recieve the password.txt file from your chat buddy.");
Console.WriteLine("");
Console.WriteLine("Please enter the IPv4 address of the buddy you are sending messages to.");
string rip = Convert.ToString(Console.ReadLine());
IPEndPoint ipep = new IPEndPoint(IPAddress.Parse(rip),8080);
Socket newsock = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
newsock.Bind(ipep);
//这是发生错误的地方。
newsock.Listen(10);
Console.WriteLine("Waiting for a client...");
Socket client = newsock.Accept();
IPEndPoint clientep = (IPEndPoint)client.RemoteEndPoint;
Console.WriteLine("Connected with {0} at port {1}",clientep.Address,clientep.Port);
string welcome = "Welcome to encrypted chat. Use ByteOribtPrivacyCannon to decrypt incoming messages.";
data = Encoding.UTF8.GetBytes(welcome);
client.Send(data,data.Length,SocketFlags.None);
string input;
while (true)
{
data = new byte[1024];
recv = client.Receive(data);
if (recv == 0)
break;
Console.WriteLine("Client: " + Encoding.UTF8.GetString(data,recv));
input = Console.ReadLine();
Console.WriteLine("You: " + input);
client.Send(Encoding.UTF8.GetBytes(input));
}
Console.WriteLine("Disconnected from {0}",clientep.Address);
client.Close();
newsock.Close();
Console.ReadLine();
}
}
}
为什么会这样?非常感谢。
解决方法
实际上,您的代码充当“服务器”。您需要听一个地址 您的计算机,但您正在绑定另一台主机的IP地址。
服务器只能接受连接,不能选择客户端。但是客户端可以选择服务器。 您可以尝试以下代码来解决它。
服务器:
IPEndPoint ipep = new IPEndPoint(IPAddress.Any,8080);
客户:
IPEndPoint ipep = new IPEndPoint(IPAddress.Parse("172.xx.xx.xxx"),8080);
//172.xx.xx.xxx is the IPV4 address of your server computer
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。