社区
网络编程
帖子详情
如何读取本机端口的数据???
yy306520
2007-09-28 05:04:22
本机的IP是192.168.0.2,端口是4444,现在需要监听本机的4444端口,只要来了数据(来的数据只会就是数字和字母组合),就写到一个.txt文档里面,请大家帮忙,谢谢大家了。
读出的和一个第三方软件一样的就OK了。完成了立即揭帖给分。
...全文
367
15
打赏
收藏
如何读取本机端口的数据???
本机的IP是192.168.0.2,端口是4444,现在需要监听本机的4444端口,只要来了数据(来的数据只会就是数字和字母组合),就写到一个.txt文档里面,请大家帮忙,谢谢大家了。 读出的和一个第三方软件一样的就OK了。完成了立即揭帖给分。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
candy_hxu
2008-09-27
打赏
举报
回复
问题1:你是不是要通过GPRS实现数据的传输啊?
如果是,那就继续问题2;如果不是,那我也不知道答案了,后面写的可以不看。
问题2:你说到你的IP是192.168.0.2,那你是不是内网的?
如果是,那就看看我的想法;如果不是,那我也不知道答案了,后面写的可以不看。
我认为:问题在于你的连接没有成功地建立,数据可能发送了,但是根本就没有送到你的机器来。
首先得知道你连接网络的真实IP,可打开www.ip.cn查到,注意,如果你没有申请固定IP,那这个IP的数值会变化的
然后,将设置路由器端口映射到你机器
最后,发送方连接时要用你的真实IP,然后你才能收到数
到底数据有没有发送过来,可以通过一些第三方软件看到,例如科浪gprs测试软件
当确定收到数据后,再测试你编写的程序吧
neversaydie518
2007-10-13
打赏
举报
回复
最简单的服务器端的程序,已经调试过了。你只要再判断
来的数据是数字和字母组合,再写到一个.txt文档里面就OK了
#pragma comment(lib,"WS2_32.lib")
#include <winsock2.h>
#include<iostream>
#include<string>
using namespace std;
void main(void)
{
WSADATA wsaData;
SOCKET ListeningSocket;
SOCKET NewConnection;
SOCKADDR_IN ServerAddr;
SOCKADDR_IN ClientAddr;
int ClientAddrLen;
int Port = 4444;
int Ret;
char DataBuffer[1024];
// Initialize Winsock version 2.2
if ((Ret = WSAStartup(MAKEWORD(2,2), &wsaData)) != 0)
{
cout<<"WSAStartup failed with error"<<Ret<<endl;
return;
}
// Create a new socket to listening for client connections.
if ((ListeningSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP))
== INVALID_SOCKET)
{
cout<<"socket failed with error"<<WSAGetLastError()<<endl;
WSACleanup();
return;
}
ServerAddr.sin_family = AF_INET;
ServerAddr.sin_port = htons(Port);
ServerAddr.sin_addr.s_addr = htonl(INADDR_ANY);
// Associate the address information with the socket using bind.
if (bind(ListeningSocket, (SOCKADDR *)&ServerAddr, sizeof(ServerAddr))
== SOCKET_ERROR)
{
cout<<"bind failed with error"<<WSAGetLastError()<<endl;
closesocket(ListeningSocket);
WSACleanup();
return;
}
if (listen(ListeningSocket, 5) == SOCKET_ERROR)
{
cout<<"listen failed with error"<<WSAGetLastError()<<endl;
closesocket(ListeningSocket);
WSACleanup();
return;
}
//reuse
const char opt = 1;
setsockopt(ListeningSocket, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
// Accept a new connection when one arrives.
if ((NewConnection = accept(ListeningSocket, (SOCKADDR *) &ClientAddr,
&ClientAddrLen)) == INVALID_SOCKET)
{
cout<<"accept failed with error"<<WSAGetLastError()<<endl;
closesocket(ListeningSocket);
WSACleanup();
return;
}
closesocket(ListeningSocket);
// receive data
if ((Ret = recv(NewConnection, DataBuffer, sizeof(DataBuffer), 0))
== SOCKET_ERROR)
{
cout<<"recv failed with error"<<WSAGetLastError()<<endl;
closesocket(NewConnection);
WSACleanup();
return;
}
closesocket(NewConnection);
WSACleanup();
}
yy306520
2007-10-04
打赏
举报
回复
错了,是只要接收数据,不要发送数据,我的功能很简单,就是只要接收4444发来的数据就可以了,这个简单的服务器端的功能不是很复杂,就是总是不成功,有没有人可以帮忙写出这段呢。
awperpvip
2007-09-30
打赏
举报
回复
回去想了一下,原来LZ的只要收,不接是这个意思啊,
感觉语义不甚清晰,参考一下Ethereal.c
mayudong1
2007-09-29
打赏
举报
回复
新开个线程放RECV,做成无限循环
kikistorm
2007-09-29
打赏
举报
回复
试试winpcap
到网上下个,里面有例子
yy306520
2007-09-29
打赏
举报
回复
也就是实现一个最简单的服务器端,只要收,不接,不管杜塞,不管异步,甚么之类的,我的代码先设置IP,端口,在BIND,在LISTEN,最后RECV。一直取不到数据(但是数据一定是发过来的了的,有第三方软件可以看到),高手现身啊!!!!
虽然我不是搞网络的,不过我觉得应该不是太难把。
Avoid
2007-09-29
打赏
举报
回复
http://www.cppblog.com/niewenlong/archive/2007/07/22/28537.html
端口复用技术与实现代码
Avoid
2007-09-29
打赏
举报
回复
端口复用就行了
Torch009
2007-09-29
打赏
举报
回复
这方面的网上多的是
alfwolf
2007-09-29
打赏
举报
回复
别人的代码
是创建监听端口的套接字的关键部分
m_RawSock是一个原始套接字
你自己看看吧,或许可以帮到你
int CListenDlg::CreateSock()
{
int err;
char name[128];
hostent *pHostent;
int port=8310;
SOCKADDR_IN sockaddr;
m_RawSock=socket(AF_INET,SOCK_RAW,IPPROTO_IP);
if(m_RawSock==INVALID_SOCKET)
{
return WSAGetLastError(); //socket创建失败
}
err=gethostname(name,128);
if(err==SOCKET_ERROR)
{
return WSAGetLastError(); //取本机用户名失败
}
pHostent=gethostbyname (name);
sockaddr.sin_family=AF_INET;
sockaddr.sin_port=htons(port);
memcpy(&sockaddr.sin_addr.s_addr,pHostent->h_addr_list[0],
pHostent->h_length);
//free(pHostent);
err=bind(m_RawSock,(SOCKADDR *)&sockaddr,sizeof(sockaddr));//绑定
if(err==SOCKET_ERROR)
{
return WSAGetLastError(); //取本机用户名失败
}
BOOL bOptval=TRUE;
//设置套节字选项
setsockopt(m_RawSock,SOL_SOCKET,SO_REUSEADDR,(char*)&bOptval,sizeof(bOptval));
err=setsockopt(m_RawSock,IPPROTO_IP,IP_HDRINCL,(char*)&bOptval, //IP_HDRINCL该选项使之能操作IP头
sizeof(bOptval));
if(err==SOCKET_ERROR)
{
return WSAGetLastError(); //设置套节字选项失败
}
//把网卡置于混杂模式。获取IO操作的相关信息
DWORD dwBufferLen[10] ;
DWORD dwBufferInLen = 1 ;
DWORD dwBytesReturned = 0 ;
err=WSAIoctl (
m_RawSock,
SIO_RCVALL, //设置SOCK_RAW为SIO_RCVALL,以便接收所有的IP包
&dwBufferInLen,
sizeof(dwBufferInLen),
&dwBufferLen,
sizeof(dwBufferLen),
&dwBytesReturned,
NULL,
NULL
);//最后两参数设置非阻塞
if(err==SOCKET_ERROR)
{
return WSAGetLastError(); //设置套节字选项失败
}
return 0;
}
zzh2106
2007-09-29
打赏
举报
回复
接分
jeffdu
2007-09-29
打赏
举报
回复
可以类似sniff,用原始套接字监听
awperpvip
2007-09-29
打赏
举报
回复
只要收,不接
呵呵,有意思,矛盾
...........
我的代码先设置IP,端口,在BIND,在LISTEN,最后RECV
只Listen,没Accept?
neosu
2007-09-28
打赏
举报
回复
抓包? 装个winpcap,有例子。
笔记本如何
读取
台式机的硬盘?
笔记本是usb接口,台式机是SATA接口。所有
端口
不同,需要通信可以用一个usb-sata转换口。
使用STM32 HAL库
读取
整个输入
端口
的
数据
使用STM32 HAL库
读取
整个输入
端口
的
数据
问题描述先看一下HAL与标准库的区别问题的解决感悟 问题描述 ST推出的新的HAL库将逐步取代以往的标准库。我最近将以往使用标准库编写的工程改用HAL库重构,发现一个问题就是HAL库无法整体
读取
指定GPIOx的
数据
(也许是我没发现相应的库函数)。 先看一下HAL与标准库的区别 HAL库提供的GPIO操作函数 void HAL_GPIO_Init(GP...
通过485
读取
设备
数据
到电脑_【玩转RS-485】看电气大牛是怎么做到快速
读取
从站
数据
?系列11...
作者:马乐1.主站发送报文结构大家可以看到我之前写的文章中的程序都是没有什么具体功能的,都是两个站点之间互相传递
数据
,这些
数据
我们只是看看是否可以正常接收发送,
数据
本身是没有任何含义的。很明显在实际使用过程中我们是不会这样去用的,对于通讯来说主站发送的
数据
通常只有两个功能,一是
读取
从站寄存器中地址的状态也就是从从站
读取
数据
,二是向从站写入
数据
。那么主站要怎么发送
数据
从站才能知道,主站是要读
数据
还是...
c#
读取
COM
端口
//初始化,打开/关闭
端口
bool Init_SerialPort()
如何为IIS FTP主动模式指定
端口
号?
如何为IIS FTP主动模式指定
端口
号?今天下午在 服务器安全讨论Q群8中,有人提问如何为IIS FTP主动模式指定
端口
号?回答如下:为何要为IIS的FTP指定
端口
号?如果服务器使用IIS中的FTP服务,为了安全启用了TCP/IP筛选或防火墙之后,IIS FTP就不那么好使用了…这是因为IIS FTP默认的Passive
端口
未打开,造成无法与FTP Client端正常通讯引起...
网络编程
18,363
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章