lan-messengerをシミュレートするときに、現在のコードをテストするためにループバックアドレスを使用しています。送信している最初のメッセージを受信できるようになっています。その後、メッセージはありませんソケットを介してメッセージを受信する
private void accepted(IAsyncResult iar)
{
Socket server = (Socket)iar.AsyncState;
Socket client = server.EndAccept(iar);
if (client.Connected)
{
try
{
client.BeginReceive(receive, 0, receive.Length, System.Net.Sockets.SocketFlags.None, new AsyncCallback(rec), client);
}
catch (ArgumentException)
{
MessageBox.Show("arguments incorrect in begin-receive call", "Error", MessageBoxButtons.OK);
}
catch (SocketException)
{
MessageBox.Show("error in accessing socket while receiving", "Error", MessageBoxButtons.OK);
}
catch (ObjectDisposedException)
{
MessageBox.Show("socket closed while receiving", "Error", MessageBoxButtons.OK);
}
catch (Exception)
{
MessageBox.Show("error while receiving", "Error", MessageBoxButtons.OK);
}
}
これは始まり、受け取るメソッドが実行されるコールバック関数は次のとおりです。?接続が行われるコールバック関数は これを助けがソケットバッファのクリアを行うには何もsocket.Isをされるしなさい到達します:
void rec(IAsyncResult ar)
{
StringBuilder receivedData;
//String oldvalue;
Socket remote = (Socket)ar.AsyncState;
int recv = remote.EndReceive(ar);
receivedData = new StringBuilder(Encoding.ASCII.GetString(receive, 0, recv));
//MessageBox.Show(receivedData.ToString(), "received", MessageBoxButtons.OK);
StringBuilder sb = new StringBuilder(this.textBox1.Text);
sb.AppendLine(receivedData.ToString());
if (textBox1.InvokeRequired)
{
this.Invoke((MethodInvoker)delegate { this.textBox1.Text = sb.ToString(); });
}
remote.Close(5);
return;
}
受け取ったデータを変数に代入するために、stringbuilderやstringのデータ型と何か関係がありますか?ここで
送信と受信の両方のコードを入力してください。 –