读书人

请问关于Socket编程的一些有关问题

发布时间: 2012-02-09 18:22:27 作者: rapoo

请教关于Socket编程的一些问题
我在主窗体中用ShowModal调用了一个子窗体, 然后子窗体里添加了一个ClientSocket和一个ServerSocket控件
在子窗体运行完程序返回到主窗体时报错了, 说是Asynchronous socket error 10061
请问这是怎么回事? 我对socket编程所知甚少....操作大概就是点击以后向服务器端发送数据,然后根据返回值执行相应的操作, 之前还显示过别的错误, 意思是说套接字只能使用1次什么的...

子窗体的操作代码如下:

if(Edit1->Text==""||Edit2->Text=="")ShowMessage("请输入登陆帐号或密码");
else
{
ClientSocket1->Active=true;
ClientSocket1->Socket->SendText(Edit1->Text);
ClientSocket1->Active=false;
ClientSocket1->Close();
ServerSocket1->Active=true;
if(ServerSocket1->Socket->ReceiveLength()==3)
{
ShowMessage(ServerSocket1->Socket->ReceiveText());
ServerSocket1->Active=false;
ServerSocket1->Close();
ClientSocket1->Close();
login->Close();
face->Show();

}
else
{
ShowMessage("用户名或密码错误");
ServerSocket1->Active=false;
ServerSocket1->Close();
ClientSocket1->Close();
}
}


[解决办法]
error 10061目标主机主动拒绝,连接不能建立。
这通常是因为试图连接到一个远程主机上不活动的服务,如没有服务器应用程序处于执行状态。

是不是服务端没有启动!
[解决办法]
呵呵

你必须编写2个程序 一个程序是SERVER端,用来监听用。另一个程序是CLIENT端,用来连接SERVER端。

从你的错误描述来看,有可能没有运行SERVER端。

或者,CLIENT端上 连接的IP地址和端口不对。
[解决办法]
子窗体运行完程序返回到主窗体时Server被释放掉了。
[解决办法]
ClientSocket和一个ServerSocket控件

这两个控件应该放在主窗口上
[解决办法]
可以在同一台上操作吗?
没试过,按照你的报错提示,应该不行。
你找另外一台电脑试下就可以啦
[解决办法]

探讨
回复1楼:
服务器端我启动了呀? 只需要将ServerSocket的active置为true就是启动了监听状态了吧?


回复2楼:
我是Client端和Server端都在同一台机子上进行测试的, 分别是2个应用程序, 都启动了, 但就是显示连接不上
另外, 为了简化问题, 我直接创建了2个新的工程, 1个只有ClientSocket, 1个只有ServerSocket, 设置端口和本机IP后, 进行连接测试。在Client端建了一个按钮, 一点击就执行
{
ClientSocket1->Active=true…

[解决办法]
补充 : 最好先都在主窗口上实现
[解决办法]
把代码精简一下,贴出来需要完整一些
另外我觉得CSDN应该有一个能上传附件的功能
这样大家吧自己的相关代码弄一个工程文件
大家一编译就好解决问题了。尤其这种问题,光用文字描述不好确定什么问题

读书人网 >C++ Builder

热点推荐