原来的QQ的Struct是不是改变了?

牧童027 2001-10-05 05:35:39
我按原来的Struct做的一个程序怎么不起作用了?原来的Struct是:
struct TOicqPtoP
{
char Tag1; // 0x02 // 显然是 Oicq 的协议编号 or 版本,固定
char Tag2; // 0x01 // 显然是 Oicq 的协议编号 or 版本,固定
char Tag3; // 0x07
char Tag4; // 0x00
char Tag5; // 0x78
char Tag6; // 这两个字节相当于 unix 上的进程 ID,
char Tag7; // 随便赋值就可。
char cOicqNub[]; // 发送方的Oicq 号码。 exp:123456
char cFF; // 0x1f 在所有的Oicq 信息结构中,分割符都是 0x1f
char cR; // '0' 固定
char cFF; //
char cE[]; // "75" ,这一位相对固定,可能是操作方式。
char cFF;
char cDateTime[]; // exp: "2000-4-10",0x1f,"12:00:12",0x1f
char OutMsg[]; // 发送的消息内容。
char cEnd; // 0x03 ,所有的 oicq 信息都已 0x03 为标记结束。
};
可我按这个Struct发出去后一点反印也没有。请各位高人指点指点。
...全文
113 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
lixiaolei 2002-03-07
  • 打赏
  • 举报
回复
是呀!你怎么知道结构的??
tianfang 2002-03-06
  • 打赏
  • 举报
回复
术业有专工,这个问题看来搞的人比较少
还有用4000端口对吗
kindman 2002-03-06
  • 打赏
  • 举报
回复
G Z
flykick 2002-03-05
  • 打赏
  • 举报
回复
咦,它的结构你怎么知道的?
zshuc 2002-03-05
  • 打赏
  • 举报
回复
mark
cnss 2002-03-04
  • 打赏
  • 举报
回复
up
cqxhhe 2002-03-04
  • 打赏
  • 举报
回复
up
FoolBoy 2001-10-23
  • 打赏
  • 举报
回复
好像是改了,我看了一下结构,发现与新版不一致
望秋阁 2001-10-12
  • 打赏
  • 举报
回复
呵呵,我不知道QQ的的Struct
牧童027 2001-10-11
  • 打赏
  • 举报
回复
To  tianfang(天放) 都四五天了,还没个人给我回个话!!!!也太…………………………
snakecobra 2001-10-09
  • 打赏
  • 举报
回复
mark it !
lin6194 2001-10-09
  • 打赏
  • 举报
回复
gz
sumtec 2001-10-08
  • 打赏
  • 举报
回复
up
tianfang 2001-10-08
  • 打赏
  • 举报
回复
大家刚刚放假回来,就会有了
tpProgramer 2001-10-08
  • 打赏
  • 举报
回复
gz
牧童027 2001-10-07
  • 打赏
  • 举报
回复
怎么连个回贴都没有啊!
ggzzkk 2001-10-05
  • 打赏
  • 举报
回复
gz
牧童027 2001-10-05
  • 打赏
  • 举报
回复
可能是我的Socket太垃圾了,这里附上我的鸟程序,请看了后不要笑。
#include <iostream.h>
#include <windows.h>
#include <winsock.h>

SOCKET InitSocket(int nSocketType/*TCP:SOCK_STREAM UDP:SOCK_DGRAM*/)
{
WSADATA wsaData;
SOCKET _MySd;

WSAStartup(MAKEWORD(1,1),&wsaData);

_MySd=socket(AF_INET,nSocketType,0);
if(_MySd==INVALID_SOCKET)
return INVALID_SOCKET;

return _MySd;
}

BOOL Bind(SOCKET _MySd,UINT nSocketPort,char* lpszSocketAddress)
{
struct sockaddr_in sa;
sa.sin_family=AF_INET;
sa.sin_port=htons(nSocketPort);
if(lpszSocketAddress==NULL){
sa.sin_addr.S_un.S_addr=INADDR_ANY;
}
else{
HOSTENT *lphto,hto;
lphto=gethostbyname(lpszSocketAddress);
if(lphto!=NULL) hto=*lphto;
sa.sin_addr.S_un.S_addr=*((unsigned long*)hto.h_addr_list[0]);
}
if(bind(_MySd,(struct sockaddr*)&sa,sizeof(sa))==SOCKET_ERROR)
return FALSE;
return TRUE;
}

BOOL Listen(SOCKET _MySd,int nConnectionBacklog)
{
if(listen(_MySd,nConnectionBacklog)==SOCKET_ERROR)
return FALSE;

return TRUE;
}

struct sockaddr_in InitSockaddr(char* lpszHostAddress,UINT nHostPort)
{
sockaddr_in sa;
sa.sin_family=AF_INET;
sa.sin_port=htons(nHostPort);
HOSTENT *lphto,hto;
lphto=gethostbyname(lpszHostAddress);
if(lphto!=NULL) hto=*lphto;
sa.sin_addr.S_un.S_addr=*((unsigned long*)hto.h_addr_list[0]);
return (sa);
}

BOOL Connect(SOCKET _MySd,char* lpszHostAddress,UINT nHostPort)
{
sockaddr_in sa;
sa.sin_family=AF_INET;
sa.sin_port=htons(nHostPort);
HOSTENT *lphto,hto;
lphto=gethostbyname(lpszHostAddress);
if(lphto!=NULL) hto=*lphto;
sa.sin_addr.S_un.S_addr=*((unsigned long*)hto.h_addr_list[0]);
if(connect(_MySd,(struct sockaddr far*)&sa,sizeof(sa))==SOCKET_ERROR)
return FALSE;

return TRUE;
}

typedef struct TOicqPtoP
{
char Tag1; // 0x02 // 显然是 Oicq 的协议编号 or 版本,固定
char Tag2; // 0x01 // 显然是 Oicq 的协议编号 or 版本,固定
char Tag3; // 0x07
char Tag4; // 0x00
char Tag5; // 0x78
char Tag6; // 这两个字节相当于 unix 上的进程 ID,
char Tag7; // 随便赋值就可。
char* cOicqNub; // 发送方的Oicq 号码。 exp:123456
char cFF0; // 0x1f 在所有的Oicq 信息结构中,分割符都是 0x1f
char cR; // '0' 固定
char cFF1; //
char* cE; // "75" ,这一位相对固定,可能是操作方式。
char cFF2;
char* cDateTime; // exp: "2000-4-10",0x1f,"12:00:12",0x1f
char* OutMsg; // 发送的消息内容。
char cEnd; // 0x03 ,所有的 oicq 信息都已 0x03 为标记结束。
}OicqP2P;


void main()
{
OicqP2P qp;
qp.Tag1=0x02;
qp.Tag2=0x01;
qp.Tag3=0x07;
qp.Tag4=0x00;
qp.Tag5=0x78;
qp.Tag6=0x02;
qp.Tag7='b';
qp.cOicqNub=new char(10);
qp.cOicqNub="0022172";
qp.cFF0=0x1f;
qp.cFF1=0x1f;
qp.cFF2=0x1f;
qp.cR=0;
qp.cE=new char(2);
qp.cE="75";
char *p2="2000-4-10";
qp.cDateTime=p2;
char *p3="QQ试试";
qp.OutMsg=p3;
qp.cEnd=0x03;

SOCKET MySd=InitSocket(SOCK_DGRAM);
if(MySd==INVALID_SOCKET){
cout<<"INITSOCKET ERROR"<<endl;
closesocket(MySd);
return;
}
struct sockaddr_in sa=InitSockaddr("127.0.0.1",4000);
int FAR* fromlen=new int;
char buf[100];
//Bind(MySd,3000,"127.0.0.1");
for(int j=0;j<5;j++){
int i=sendto(MySd,(char*)&qp,sizeof(qp),0,(struct sockaddr far*)&sa,sizeof(sa));
int k=recvfrom(MySd,buf,sizeof(buf),0,(struct sockaddr far*)&sa,fromlen);
if(i==SOCKET_ERROR) cout<<"sendto error"<<endl;
else cout<<"sendto success"<<endl;
if(k==SOCKET_ERROR) cout<<"recvfrom error"<<endl;
else cout<<"recvfrom success"<<endl;
}
}

4,356

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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