当前位置:  技术问答>linux和unix

请各位大侠相助,不忘恩情

    来源: 互联网  发布时间:2016-11-14

    本文导语:  我们做的是一个测试系统, 使用C语言socket将数据从window传输到sunOS_sparc系统下, 传输的是一个结构体(int,char,short,),改变了网络字节序, 在sunOS_sparc端是使用的线程池,当线程池运行起来, 每个线程的循环都要调...

我们做的是一个测试系统,
使用C语言socket将数据从window传输到sunOS_sparc系统下,
传输的是一个结构体(int,char,short,),改变了网络字节序,
在sunOS_sparc端是使用的线程池,当线程池运行起来,
每个线程的循环都要调用从客户端第一次传输来的结构体里的数据,
但是不知道为什么开始没事,但是后来,程序就拿不到结构体的数据了,
拿的那个是个int型数据,测试一会拿到的是168430090,我想问这是为什么?
程序在fedora下是没问题的,但是拿到sunOS_sparc就有这个问题?
或者说我sunOS_sparc结构体安排的不对?
请大侠指教。

结构体:

#define BYTE unsigned char
#define DWORD unsigned int
#define WORD unsigned short
#define FWORD float

typedef struct _RECV_CONFIG_DATA_
{
  WORD testType; //功能、性能、容错1
WORD requestSyncflag; //3同异步类型
WORD configSort; //9端口改变标记////判断服务器是否忙
WORD logfileInterval; //log文件保存时间间隔
WORD tpsconfig; //TPS配置
WORD autofalg; //运行模式(自动(1)还是手动(0))
WORD signals; ////测试模式发送0停止1
WORD serverSignal; ////监控模式发送0停止1
WORD filenum; /////发送的文件数量
  WORD endfile;
///////////////////////////////////////////
WORD runTmtotal; //10运行的总时间
WORD currunTm; //11当前运行时间
WORD reqSuccessnum; //18请求成功个数
WORD reqFailurenum; //19请求失败个数
WORD successRate; //22成功率
WORD top5Avgcpuuti; //25
WORD top5Avgmemuti; //28
WORD timeoutNum;      //超时个数
WORD requestNum;

///////////////////////////////////////////
WORD reqDelaymintm; //4请求最小延时
WORD reqDelaymaxtm; //5请求最大延时
DWORD localPort; //29
DWORD lbsPort;
DWORD localmonitor; //30
DWORD lbsmonitor;
DWORD tpsNum;   //12tps数目
DWORD avgRespedelay;
DWORD maxRespedelay; //21最大应答延时
//--------------------
DWORD answerTime; //13应答时间
DWORD curCpuuti; //14当前cpu利用率
DWORD curMemuti; //15当前内存利用率
DWORD maxCpuuti; //16最大CPU利用率
DWORD maxmemuti; //17最大内存利用率
//FWORD avgRespedelay; //20平均应答延时
//FWORD maxRespedelay; //21最大应答延时
DWORD avgCpuuti; //27平均cpu使用率
DWORD avgMemuti; //26平均内存使用率
//--------------------

BYTE localIP[16]; //31
BYTE lbsIP[16]; //32
BYTE starttime[15]; //自动运行开始时间
BYTE endtime[15]; //自动运行结束时间

// FWORD tpsNum;   //12tps数目
// FWORD answerTime; //13应答时间
// FWORD curCpuuti; //14当前cpu利用率
// FWORD curMemuti; //15当前内存利用率
// FWORD maxCpuuti; //16最大CPU利用率
// FWORD maxmemuti; //17最大内存利用率
//FWORD avgRespedelay; //20平均应答延时
//FWORD maxRespedelay; //21最大应答延时
// FWORD avgCpuuti; //27平均cpu使用率
// FWORD avgMemuti; //26平均内存使用率


}RECV_CONFIG_DATA,*LPSEND_CONFIG_DATA;

|
如果多个线程没有采用同步机制(比如互斥锁)的保护,同时操作一个全局变量,会造成变量的取值混乱

|
1。你在读socket的时候,缓冲区里不一定是一个完整的结构,也许多了,也许不完整。这点是作网络通讯的常识。
2。一个socket绝对不应该用多个线程同时操作!一个socket的缓冲区只有一个(读写各一个),多个线程对一个缓冲区读总会出问题的,这个也应该当了解,否则你的代码就是“玩意”。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 各位大侠,本人是新手上路,经理马上让做palm,我可是从0学起!有没有那位大侠给我介绍一点经验和好的技术论坛,谢了!
  • hotenM(CMP)大侠等EJB大侠进来!小问题请教!
  • 请教大侠,怎么选开发学习板?
  • 大侠请援手:有关动态连接库。
  • 写过BBS的大侠看过来!
  • 请各位大侠推荐两本Solaris的经典书籍?
  • 各位大侠,求助Linux下关机
  • 大侠们,我是新手,请教怎么判断串口是否有连接
  • 想各位大侠求教了,为什么我的jdbc驱动不支持absolute这个方法呢?
  • 数据恢复, 求大侠帮助, 急等!!!!!!!
  • 各位大侠,给点意见
  • JSP+数据库文本存取中的换行问题,请教大侠
  • 各位大侠:lock 命令怎么用?
  • 关于session方面的问题!哪位大侠帮帮忙!?
  • 各位大侠,那有JBuilder书down? 那有PDF格式文件的阅读器?
  • 各位大侠,还有一问题请教,如下:
  • 请“路人甲”大侠进来来看看。。。多谢了。。
  • 请各位大侠介绍几本 UNIX 的书籍
  • solaris,请大侠帮忙!
  • 哪位大侠能提供一些Motif的电子书?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3