返回信息流在做一个c/s + mysql的结构。思路是:
1. 客户端中发数据至服务端应用程序,然后在服务端执行sql语句,返回结果,再发送回至客户端,客户端接受完数据
后,控件中显示数据。
2.我定义的发送包结构:
typedef struct SendData{
int iLength;//数据包总长度
unsigned char ucSqlType;//sql语句类型,即判断是select、update、delete、insert...等sql操作类型
char NetData[1024*2];//数据,一般为执行的sql语句
}SENDDATA, *PTRSENDDATA;
遇到了一些问题:
1. 返回的数据包格式: 大家觉得数据包格式如何定义好呢?由于返回数据格式是不一样的。
比如有的是需要返回表的列数、表的每行的数据、有的是返回列的一些属性,等等。。。不像客户端发送的数
据形式那么单一。
2.
在客户端代码A处和B处代码
.....
char Sendbuff[100] = "select * from tbl_User";
int iSend = send(sockConn , Sendbuff , sizeof(Sendbuff) , 0);
char RecvBuff[1024*4];
recv(sockConn ,RecvBuff,sizeof(RecvBuff),0);//如果一直在这个地方接收的话,是否容易产生阻塞引起程序无反应
啊?
在客户端代码B处:
char buff[100] = "select * from tbl_Book";
int iSend = (sockConn , buff,sizeof(buf) , 0)
recv(..)//同上
这是一条镜像帖。来源:北邮人论坛 / cpp / #28737同步于 2009/9/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
网络编程问题
youziboy
2009/9/19镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
【 在 youziboy (柚子) 的大作中提到: 】
: 标 题: 网络编程问题
: 发信站: 北邮人论坛 (Sat Sep 19 20:18:11 2009), 站内
:
: 在做一个c/s + mysql的结构。思路是:
: 1. 客户端中发数据至服务端应用程序,然后在服务端执行sql语句,返回结果,再发送回至客户端,客户端接受完数据
:
: 后,控件中显示数据。
: 2.我定义的发送包结构:
: typedef struct SendData{
: int iLength;//数据包总长度
: unsigned char ucSqlType;//sql语句类型,即判断是select、update、delete、insert...等sql操作类型
: char NetData[1024*2];//数据,一般为执行的sql语句
: }SENDDATA, *PTRSENDDATA;
:
: 遇到了一些问题:
: 1. 返回的数据包格式: 大家觉得数据包格式如何定义好呢?由于返回数据格式是不一样的。
: 比如有的是需要返回表的列数、表的每行的数据、有的是返回列的一些属性,等等。。。不像客户端发送的数
:
: 据形式那么单一。
定义一个双方都知道的接口呗,然后最好转化成网络字节序.
可以使用xdr写一个pack函数。
:
: 2.
: 在客户端代码A处和B处代码
: .....
: char Sendbuff[100] = "select * from tbl_User";
: int iSend = send(sockConn , Sendbuff , sizeof(Sendbuff) , 0);
:
: char RecvBuff[1024*4];
: recv(sockConn ,RecvBuff,sizeof(RecvBuff),0);//如果一直在这个地方接收的话,是否容易产生阻塞引起程序无反应
:
: 啊?
是。
所以最好写一个发线程,一个收线程。
:
: 在客户端代码B处:
: char buff[100] = "select * from tbl_Book";
: int iSend = (sockConn , buff,sizeof(buf) , 0)
: recv(..)//同上
:
: --
: 9公里马拉松羞愧的准备中
:
: ※ 来源:·北邮人论坛 http://forum.byr.edu.cn·[FROM: 211.71.15.*]
yy一下……轻拍
1、sql查询返回的东西要么是表要么是数值吧,我觉得数据包里面应该要能够表示出查询结果的表
2、send() recv()调用默认阻塞,进程睡觉……
【 在 huitailang 的大作中提到: 】
: 定义一个双方都知道的接口呗,然后最好转化成网络字节序.
: 可以使用xdr写一个pack函数。
: 是。
: ...................
你意思是说在A、B处分别创建接收线程,即:
也就是在A处: 一个发送、接收线程,B处一个发送、线程那如果还有C、D、。。。呢?
还是整个程序就一个线程负责发送、一个负责接收呢,然后一个主线程。
【 在 michaelwang 的大作中提到: 】
: 为什么不使用非阻塞方式呢
: 如果有数据就接收
: 没数据就跳过 继续执行后面的
bingo!
【 在 michaelwang 的大作中提到: 】
: 为什么不使用非阻塞方式呢
: 如果有数据就接收
: 没数据就跳过 继续执行后面的
能不能给点简要代码提示呢?对非阻塞方式的使用不太了解,看了书也不太会用啊。。
socket
fcntl O_NONBLOCK
select
read
【 在 youziboy 的大作中提到: 】
: 能不能给点简要代码提示呢?对非阻塞方式的使用不太了解,看了书也不太会用啊。。