C++和c#的socket通讯问题~高手进!

apower511 2003-08-18 03:19:08
为什么我用c++ socket监听,用c# 里的socket send就没有问题。
而我用c#监听,用c++ send就不行,连都连不上返回:10061错误
Connection refused.
No connection could be made because the target computer actively refused it. This usually results from trying to connect to a service that is inactive on the foreign host—that is, one with no server application running.
救命啊~~~
求高手指点.
...全文
39 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wxy2ab 2003-08-19
  • 打赏
  • 举报
回复
以前我好像也遇到过相同问题
试试看把ip改成本机的ip(不是127。0。0。1那个)
apower511 2003-08-18
  • 打赏
  • 举报
回复
我又改了改,用mfc的csocket错误变成10060了~
apower511 2003-08-18
  • 打赏
  • 举报
回复
up~一下,要沉了~大家想想办法啊
apower511 2003-08-18
  • 打赏
  • 举报
回复
6745啊,有问题吗?
顾君彦 2003-08-18
  • 打赏
  • 举报
回复
请设一下监听的端口号
apower511 2003-08-18
  • 打赏
  • 举报
回复
c++ code:
void CDf_ginatestDlg::OnOK()
{
CString str;
GetDlgItemText(IDC_EDIT_IP, str);
SOCKET stClient = INVALID_SOCKET;
stClient = socket(AF_INET, SOCK_STREAM,IPPROTO_TCP);
if(stClient != INVALID_SOCKET)
{
sockaddr_in addr;
hostent* pEnt = NULL;
pEnt = ::gethostbyname(str);

if(pEnt)
{
addr.sin_family = AF_INET;
addr.sin_port = ::htons(6745);
addr.sin_addr.S_un.S_un_b.s_b1 = pEnt->h_addr_list[0][0];
addr.sin_addr.S_un.S_un_b.s_b2 = pEnt->h_addr_list[0][1];
addr.sin_addr.S_un.S_un_b.s_b3 = pEnt->h_addr_list[0][2];
addr.sin_addr.S_un.S_un_b.s_b4 = pEnt->h_addr_list[0][3];
int nRet = ::connect(stClient, (sockaddr*)&addr, sizeof(addr));
if(nRet != SOCKET_ERROR)
{
char chData[10];
ZeroMemory(chData, 10);
chData[0] = 26;
send(stClient, chData, 10, 0);
recv(stClient, chData, 10, 0);
}else
{
int ii=WSAGetLastError();

int j=0;
}
}
closesocket(stClient);


}
apower511 2003-08-18
  • 打赏
  • 举报
回复
先谢谢各位了:
c# code:
private void HandleListen()
{
Socket Handle=s.Accept();
String data=null;
byte[] resByte;
while(true)
{
//char[] chars=new char[1024];
resByte=new byte[1024];
int bytesrec=Handle.Receive(resByte);
//int charssrec=Handle.Receive(chars);

data+=System.Text.Encoding.ASCII.GetString(resByte,0,bytesrec);
//data+=chars.ToString();
RTB.AppendText("\r\n"+data);
if (data.IndexOf(".") > -1)
{
break;
}

}

//Handle.Shutdown(SocketShutdown.Both);
Handle.Close();
s.Close();
t.Abort();
}
private Socket s;
System.Threading.Thread t;
private void ListenBt_Click(object sender, System.EventArgs e)
{
s=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 6745);
s.Bind(localEndPoint);
s.Listen(100);
RTB.AppendText("Begin Listening......");
System.Threading.ThreadStart ts=new System.Threading.ThreadStart(HandleListen);
t=new System.Threading.Thread(ts);
t.Start();

}
}
bborn 2003-08-18
  • 打赏
  • 举报
回复
还没有遇见这种情况 贴代码
poetc 2003-08-18
  • 打赏
  • 举报
回复
你把代码贴出来;
以前遇见过,改了一下就可了的;
是代码的问题。不是MS的问题。
apower511 2003-08-18
  • 打赏
  • 举报
回复
但愿不是ms的问题.

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧