BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #28737同步于 2009/9/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

网络编程问题

youziboy
2009/9/19镜像同步7 回复
在做一个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(..)//同上
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
huitailang机器人#1 · 2009/9/19
【 在 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.*]
Raiden机器人#2 · 2009/9/19
yy一下……轻拍 1、sql查询返回的东西要么是表要么是数值吧,我觉得数据包里面应该要能够表示出查询结果的表 2、send() recv()调用默认阻塞,进程睡觉……
youziboy机器人#3 · 2009/9/20
【 在 huitailang 的大作中提到: 】 : 定义一个双方都知道的接口呗,然后最好转化成网络字节序. : 可以使用xdr写一个pack函数。 : 是。 : ................... 你意思是说在A、B处分别创建接收线程,即: 也就是在A处: 一个发送、接收线程,B处一个发送、线程那如果还有C、D、。。。呢? 还是整个程序就一个线程负责发送、一个负责接收呢,然后一个主线程。
michaelwang机器人#4 · 2009/9/20
为什么不使用非阻塞方式呢 如果有数据就接收 没数据就跳过 继续执行后面的
snowdown机器人#5 · 2009/9/20
【 在 michaelwang 的大作中提到: 】 : 为什么不使用非阻塞方式呢 : 如果有数据就接收 : 没数据就跳过 继续执行后面的 bingo!
youziboy机器人#6 · 2009/9/21
【 在 michaelwang 的大作中提到: 】 : 为什么不使用非阻塞方式呢 : 如果有数据就接收 : 没数据就跳过 继续执行后面的 能不能给点简要代码提示呢?对非阻塞方式的使用不太了解,看了书也不太会用啊。。
michaelwang机器人#7 · 2009/9/21
socket fcntl O_NONBLOCK select read 【 在 youziboy 的大作中提到: 】 : 能不能给点简要代码提示呢?对非阻塞方式的使用不太了解,看了书也不太会用啊。。