EDIT:私は同じポートを2回使用していました。グーグルでは誰でもこれをここに残しておくと、htisのようなスレッドが過去に私を助けてくれました。ソケットを複数回使用してTCPを送信して受信する(C#)
私は現在、サーバーとクライアントに高い評価を得ているプロジェクトの作業を行っています.2つのプロジェクトでデータを同期し、XMLで保存します。私はそれがすべてかなり働いているが、私は例外 "System.Net.Sockets.SocketException:各ソケットアドレスの1つの使用"を取得し続け、私はそれを取り除く方法を把握することはできません。私には、Recieve
に移動する前にTcpClient
をUpdate
に閉じてからコードが正常に見えます。誰かが私が行方不明になっていることを見つけ出すことができますか、または私が間違っていることを私に説明してください私はまったく新しいので、説明の中のいくつかの実際のコードは大いに役立つでしょう!
static void Main(string[] args)
{
Update();
Recieve();
}
クライアントへの送信サーバー:クライアントからrecieving
public static void Update()
{
List<string> stringList = new List<string>();
XmlDocument highScore = new XmlDocument();
highScore.Load("hs.xml");
for (int i = 0; i < 5; i++)
{
int placering = i + 1;
stringList.Add(highScore.SelectSingleNode("highScores/score" + (placering)).InnerText);
}
string toSend = stringList[0] + stringList[1] + stringList[2] + stringList[3] + stringList[4];
string adress = "127.0.0.1";
int port = 82;
TcpClient tcpClient = new TcpClient();
tcpClient.Connect(adress, port);
NetworkStream stream = tcpClient.GetStream();
Byte[] bSend = Encoding.ASCII.GetBytes(toSend);
NetworkStream tcpStream = tcpClient.GetStream();
tcpStream.Write(bSend, 0, bSend.Length);
tcpClient.Close();
}
サーバー:
public static void Recieve()
{
//skapa ett TcpListener objekt
IPAddress myIp = IPAddress.Parse("127.0.0.1");
TcpListener tcpListener;
int port = 82;
tcpListener = new TcpListener(myIp, port);
tcpListener.Start(); //Throws the exception
Socket socket = tcpListener.AcceptSocket();
int messageSize;
Byte[] bMessage = new Byte[256];
while (true)
{
try
{
messageSize = socket.Receive(bMessage);
break;
}
catch { }
}
//konvertera till string och skriv ut
string message = "";
for (int i = 0; i < messageSize; i++)
{
message += Convert.ToChar(bMessage[i]);
}
for (int i = 0; i < 5; i++)
{
SaveScore(int.Parse(message[i].ToString()), i + 1);
}
socket.Close();
}
どちらの方法は、ゲームよりも別々の溶液中で同じProgram.cs
です。
どの行が例外をスローしますか? – apocalypse
tcpListener.Start()@apocalypse – AMaleWhale