コンピューターとサーバー間のソケット通信に問題があります。特定のボタンをクリックした場合にのみ、ソケットを介して通信を確立します。最初のコミュニケーションでは、すべてが完璧に行われます。もう一度クリックすると、コードは実行されません。何が起こっているのかを確認するためにブレークポイントを設定したところ、特定の行で、彼は単にその行を実行しようとしているだけで、長い間実行されていることがわかりました。(私は常に同じパラメータを渡します)。
長時間処理するライン
serverStream.Read(inStream, 0, (int)clientSocket.ReceiveBufferSize);
クライアントコード
private void Form1_Load(object sender, EventArgs e)
{
msg("Client Started");
clientSocket.Connect("server_ip", 8855);
//clientSocket.Connect("127.0.0.1", 8873);
label1.Text = "Client Socket Program - Server Connected ...";
this.imprimir();
}
protected void imprimir()
{
NetworkStream serverStream = clientSocket.GetStream();
byte[] inStream = new byte[10025];
//// LINE THAT PROCESS FOR A LONG TIME IN THE SECOND TIME.
serverStream.Read(inStream, 0, (int)clientSocket.ReceiveBufferSize);
string returndata = System.Text.Encoding.ASCII.GetString(inStream);
int ponto = returndata.IndexOf('.');
returndata = returndata.Substring(0, ponto);
string[] quebraretorno = returndata.Split(';');
ServiceReference1.bematechSoapClient bema = new ServiceReference1.bematechSoapClient();
string r = bema.InformacoesImovelBematech(quebraretorno[0], quebraretorno[1]);
int retorno = -1;
retorno = IniciaPorta("COM7");
if (retorno == 1)
{
ConfiguraModeloImpressora(7);
BematechTX(r);
AcionaGuilhotina(1);
FechaPorta();
}
clientSocket.Close();
}
サーバーコード
public void btnImprimeBematech_Locacao()
{
Utilidade.QuebraToken tk = new Utilidade.QuebraToken();
int Credenciada = Convert.ToInt32(tk.CarregaToken(1, HttpContext.Current.Request.Cookies["token"].Value));
TcpListener serverSocket = new TcpListener(8855);
int requestCount = 0;
TcpClient clientSocket = default(TcpClient);
serverSocket.Start();
clientSocket = serverSocket.AcceptTcpClient();
requestCount = 0;
while ((true))
{
try
{
requestCount = requestCount + 1;
NetworkStream networkStream = clientSocket.GetStream();
string serverResponse = Request.QueryString["id"] + ";" + Credenciada.ToString() + ".";
Byte[] sendBytes = Encoding.ASCII.GetBytes(serverResponse);
networkStream.Write(sendBytes, 0, sendBytes.Length);
networkStream.Flush();
}
catch (Exception ex)
{
}
}
clientSocket.Close();
serverSocket.Stop();
}
誰でも私を助けることができますか?