已知局域网内机子的ip地址,有没有办法向此机子发送数据?
我有一个服务器,有对外ip,但为了减少服务器负担,不能让客户始终连接服务器,
所以希望能实现在需要连接客户的时候能够激活客户端使之连接服务器,可否有办法实现?请高手指点。谢谢了先!
我有一个服务器,有对外ip,但为了减少服务器负担,不能让客户始终连接服务器,
所以希望能实现在需要连接客户的时候能够激活客户端使之连接服务器,可否有办法实现?请高手指点。谢谢了先!
解决方案 »
- CxImage与Cimage的分别用途
- WSASend 自动分包发送慢的问题,请高手解答
- 如何使窗口始终处于前台?
- 控件和变量进行关联出错,请教
- 怎样在CView里面创建一个字窗口
- 关于_variant_t类型,就这么多分了,大侠们帮帮忙啊(内详)
- opengl VC
- 请问如何在窗口标题栏上加下拉菜单?
- VC中的VERIFV是什么意思。还有ASSERT是什么意思,看MSDN看的不是太明白,希望有代码解释。
- 在VC中,怎样读取和修改硬盘的分区表、文件目录表及文件分配表
- OCR识别. [强烈置定,让大家详细讨论,CSDN上,这方面资料几乎没有深入探讨过,空白!]
- 江湖救急:如何静态引入MSVCP60.DLL
net send <ip address or hostname> <message>
用socket编程,不想连接的时候关闭端口不就行了。
也就是用SOCK_DGRAM,而不用SOCK_STREAM
小弟刚学,比较菜,大家别笑。
这是客户端
m_sockSend.Create(6800,SOCK_DGRAM,NULL);
m_sockSend.Bind(6800,"127.0.0.1");
UpdateData(true);
char szSend[100];
strcpy(szSend, m_szSend);
int iSend= m_sockSend.SendTo(szSend, sizeof(szSend), 6801, "172.16.10.16", 0);这是服务器端 m_sockRecv.Create(6801,SOCK_DGRAM,"127.0.0.1");
m_sockRecv.Bind(6801,"127.0.0.1");
SetTimer(1,3000,NULL);
AfxBeginThread(Thread, (LPVOID)this);
UpdateData(FALSE);
CDialog::OnTimer(nIDEvent);
UINT Thread( LPVOID pW );//线程
UINT Thread( LPVOID pW )
{
CServerDlg *p = (CServerDlg*) pW;
char szRecv[20];
CString szIP("127.0.0.1");
UINT uPort=6800;
int iRecv = p->m_sockRecv.ReceiveFrom(szRecv,10,szIP,uPort,0);
if(iRecv == 0)
{
return 0;
}
TRACE("received %d byte\n",iRecv);
szRecv[iRecv]='\0';
p->m_szRecv=szRecv;
return 0;
}
socket绑定的ip地址到底是什么?自己的ip?
如果局域网内的ip是192.168.0.25,
对外ip为61.129.9.x,服务器ip为61.235.6.x,
假设服务器首先发送数据,
则bind时候的ip是多少?发送的ip是多少?
是否客户端需要写一个loop来接收?
我这里条件不好,不是很好测试,所以想直接问一下。
我看网络编程才几天,如果问得很弱智,请不要笑我。
多播的时候也要绑定到一个ip上,这个ip到底是什么ip?
我反复看了几遍,就是没看懂,还望各位大侠教我,谢谢了先!
加一个 connect 连到对方,发一个我准备好了,放马过来,就关了自己 当然,这时也要做好一个 listen 在指定的端口等好,要不别人放马过来就....
准备好了,在指定的端口启动 listen启动成功 --》 使用 connect 到对方,发送来连我吧消息,确认收到就退出同一个 SOCKET 这样做就不好了!如果消息发过去,对方来连,可是这边还设有启动 SOCKET 怎办?你想错了, connect 中指出的端的口是要连接到对方机器的端口,不是本机使用的,也就是说: 例如 IE 你开了很多连到同一个服务器,则你要指出对方机器的 80 端口,本地的端口就不会是 多个 IE 使用同一个了
这样吧看下图客户机 使用端口 服务器 使用端口
listen 80 在 80端口监听 80connect 80 ???
connect 80 ???
connect 80 ???
connect 80 ???
现在清楚一点了吗?
只有服务器上监听时是占用了 80 端口,客户端连接到80端口,它自己并不一定也是使用 80 端口,可能是别的端口