消息队列(在线等待,急!) (300分)

  • 主题发起人 主题发起人 Lotus123
  • 开始时间 开始时间
L

Lotus123

Unregistered / Unconfirmed
GUEST, unregistred user!
主机为Unix,客户端为Windows2000,要求通过Socket向主机的消息队列中收发消息。
请哪位DFW给一个例子,急!
E-mail to: xianguochen@21cn.com
 
严重关注
 
把例子发到这里吧
我也想看看
 
关注此题!!!
不会,帮你提前
 
关注此题!!!
哥我一个:
wqt0318@sohu.com
 
难道不就是分成两步吗?
首先客户端向服务器端发送消息.
然后服务器端接收到消息则将其排入消息队列.
不知道是不是我理解错了.但是我觉得就是这么简单.
 
是啊,你写个CLIENT接受到消息以后,分析一下,再发送到消息队列里就行了
建议用PostMessage(),这样就不会组塞...
 
给个例子吧,以前没写过这方面的程序,谢谢!
 
是啊!客户端通过clientsocket通知server端的serversocket,并在它的onClientRead事件
中处理你的postmessage,你认为怎样!
 
Server端是Unix,没有专门的接收程序
 
没有专门的接收程序,那也只好写一个了.好在比较简单.
前提有两个:
1.你有权限建立监听端口;
2.你能够得知消息队列的指针,并且具有足够权限向其发送消息.
 
我简单写了以下几句,只是说明问题,未经运行验证,仅供参考.
有些东西跟你的具体实现有关系,看明白了就应该可以自己写出来了.
#include <sys/types.h>
#include <unistd.h>
#include <sys/ipc.h>
#include <sys/msg.h>

UNIQUE_KEY = 12345678;//这个数字是你的目标消息队列的关键字
struct msgbuf{
long mtype;
char mtext[100];
};//消息格式

void main(){

struct msgbuf mq_buf;

//以下几个是用于定义套接字的
struct sockaddr_in sin;
struct sockaddr_in pin;
int sock_descriptor;
int temp_sock_descriptor;
int address_size;

int id = msgget(UNIQUE_KEY,0666);//得到目标消息队列的标识
mq_buf.mtype = 123;

//建立服务器端倾听套接字
sock_descriptor = socket(AF_INET,SOCK_STREAM,0);
bzero(&amp;sin,sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = INADDR_ANY;
sin.sin_port = htons(8000);
bind(sock_descriptor,(struct sockaddr *)&amp;sin,sizeof(sin));
listen(sock_descriptor,10);

//无限循环接收来自客户端的消息
while(1){
temp_sock_descriptor = accept(sock_descriptor,(struct sockaddr *)&amp;pin,&amp;address_size);
recv(temp_sock_descriptor,mq_buf.mtext,16384,0);

//收到消息之后发送到消息队列中
msgsnd(id,(struct msgbuf *)&amp;mq_buf,100,123,IPC_NOWAIT);

close(temp_sock_descriptor);
}

}
 
我要的是客户端程序
 
PostMessage可以指定目标服务器吗?
 
^%*^%#$*%^%$(&amp;*
服务器端都写好了,客户端那不是非常容易的事情吗?
尽管朝着服务器端的知名端口发送消息好了,这个你应该知道的吧.
客户端是windows,那么可以用delphi,C,C++,everything as u wish.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
601
import
I
I
回复
0
查看
560
import
I
I
回复
0
查看
615
import
I
后退
顶部