回 帖 发 新 帖 刷新版面

主题:求助!关于socket聊天服务器的问题

楼主   聊天服务器采用c++ builder,客户端用的是java,现在的问题是服务器发给客户端的消息,发送完以后需要关闭或者停止服务器的socket,客户端才能接受到服务器的消息,求高手解答。
以下是服务器程序
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button_listenClick(TObject *Sender)
{
  ServerSocket_applet->Active=false;
  ServerSocket_applet->Port=StrToInt(Edit_port->Text);

  ServerSocket_applet->Active=true;
  Button_listen->Enabled=false;
  Button_stop->Enabled=true;
  Edit_port->Enabled=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button_stopClick(TObject *Sender)
{
  ServerSocket_applet->Active=false;
  Button_listen->Enabled=true;
  Button_stop->Enabled=false;
  Edit_port->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket_appletClientConnect(TObject *Sender,
      TCustomWinSocket *Socket)
{ AnsiString Status;
  Status=DateTimeToStr(Now())+":"+Socket->RemoteAddress+"("+Socket->RemoteHost+")"+" Connected";
  ListBox_log->Items->Add(Status);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket_appletClientDisconnect(
      TObject *Sender, TCustomWinSocket *Socket)
{ AnsiString Status1;
  Status1=DateTimeToStr(Now())+":"+Socket->RemoteAddress+" ("+Socket->RemoteHost+") "+" Disconnected";
  ListBox_log->Items->Add(Status1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket_appletClientRead(TObject *Sender,
      TCustomWinSocket *Socket)
{  String Is_read;
  Is_read=Socket->ReceiveText();
  Memo_data->Lines->Add(DateTimeToStr(Now())+" 收到来自 "+Socket->RemoteAddress+"("+Socket->RemoteHost+") 的数据"+":"+Is_read);
  //Memo_data->Text=Memo_data->Text+DateTimeToStr(Now())+" 收到来自 "+Socket->RemoteAddress+"("+Socket->RemoteHost+") 的数据"+":"+Is_read;
  //Socket->SendText(DateTimeToStr(Now())+" "+Socket->RemoteAddress+"("+Socket->RemoteHost+")"+":"+Is_read);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button_exitClick(TObject *Sender)
{
  ServerSocket_applet->Close();
   Close();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ServerSocket_appletAccept(TObject *Sender,
      TCustomWinSocket *Socket)
{
  AnsiString strPrompt="服务器消息:"+Socket->RemoteHost+"加入";
 // for(int i=0;i<ServerSocket_applet->Socket->ActiveConnections;i++)
 // ServerSocket_applet->Socket->Connections[i]->SendText(strPrompt);
  Memo1->Lines->Add(strPrompt);
  //StatusBar1->Panels->Items[0]->Text=strPrompt;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString strPrompt1="服务器消息:"+Edit1->Text;
  for(int i=0;i<ServerSocket_applet->Socket->ActiveConnections;i++)
  ServerSocket_applet->Socket->Connections[i]->SendText(Edit1->Text);
  //ServerSocket_applet->Active=false;
  //ServerSocket_applet->Port=StrToInt(Edit_port->Text);
  //ServerSocket_applet->Active=true;
  Memo_data->Lines->Add(strPrompt1);
   Edit1->Text="";
}
//--------------------------------------------------------------------------- 

回复列表 (共3个回复)

沙发

用其它现成的软件来做测试,确定是谁的问题

板凳


其他软件是什么软件阿,麻烦这位大哥说明白点,不胜感激

3 楼

比如 网络调试助手 等。

写代码,各种测试用软件怎么能少呢?

我来回复

您尚未登录,请登录后再回复。点此登录或注册