⑴ C语言socket编程要怎么实现服务器可以发消息给客户端
先要理解socket是什么?
简单的说socket是一个全双工的通信通道,
即使用TCP或者UDP通信时均可以在发送消息的同时接受消息,
它不区分是否是服务器。
根据这个概念你的问题就很好回答。
》当客户端与服务器连接后。有什么方法使服务器可以随时随地发消息给客户端?
》我现在只能。客户端发个消息给服务器。服务器才能发个消息给客户端。也就是说客户端不发消息。服务器就没法发消息给客户端。
》求大牛给个思路。当连接后。客户端与服务器双方可以随时随地通信!
使用多线程,一个维持接受逻辑,一个维持送信逻辑,即可完成同时接受及发送。
客户端及服务器端均做上述设置。
而你的做法是在一个线程中执行接受与送信,因此只能按照顺序逻辑完成接收与送信。
关键点是多线程。
⑵ 服务器如何及时通知客户端
如何实现服务器向客户端发出一条通知?
当向服务器数据库插入一条数据时,服务器就向客户端发出一条信息,让客户端及时知道;
如何实现呢?
能描述清楚点吗?问题太大概了吧。
向客户发送消息的sendMessage方法是不是已经准备好了?
那接下来就是选择在程序中100%确定已经向数据库插入了数据的地方调用sendMessage方法。
简单的实现可以用js的alert方法。
执行数据库插入操作,后返回值,js判断,根据返回的值,如果插入成功,则alert('插入成功')
ejb的拦截器应该能实现,给向数据库插入数据的这个方法加个拦截器,在这个拦截器类里边先调用这个方法,然后实现向客户端发消息
得看你做B/S还是C/S
看不懂说的啥。。
在消息库里插一条 消息数据。 再查询出来 不就好了。 这是简单的方式咯。 复杂点就用推送技术吧
基本上就两招:
要么是 短连接下的客户端发起轮询 模型;
要么是 长连接下的服务器端主动推送 模型。
C/S没玩过,B/S用过推模式,比轮询要好的多
我现在用的数据库连接字符串是private static string conStr = @"Data Source=192.168.1.37,1611;Initial Catalog=QLYM;User ID=sa;Pwd=system";这是局域网的!那连接服务器数据库应该什么写呢?
当服务器数据库数据有更新时,客户端如何及时知道?客户端是client的,轮询会对服务器有压力,有什么技术更好的?
客户端只设置两个,每分钟访问服务器一次,这样服务器的压力应该不大吧?
⑶ 用Socket怎么从服务器向客户端发送消息
最好的方法是:每一客户端用唯一的ID来标示,
就像QQ号一样,
在客户端连接服务器,发送自己的ID,
然后和相应产生的SOCKET进行绑定,
一个客户端向另一个客户端发送信息时,要求在数据包里包含对方的ID号。可以定义一个类型下列的数据结构对数据包进行封装:
type
struct
_sdata
{
int
sourceID;//发送者自己的ID
int
destID;
//接收者的ID
char
datainfo[1];//数据信息
}SDATA,
*PSDATA;