Chinaunix首页 | 论坛 | 博客
  • 博客访问: 26167
  • 博文数量: 10
  • 博客积分: 1480
  • 博客等级: 上尉
  • 技术积分: 110
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-27 10:37
文章分类
文章存档

2011年(1)

2010年(4)

2009年(5)

最近访客

分类: 嵌入式

2010-03-31 20:12:08

文件: LPC在串口和网络口源代码.rar
大小: 3695KB
下载: 下载
这几天在写一个小程序,实现MFC通过串口传送数据给ARM,ARM从串口接收后通过socket的send函数发送到linux虚拟机端的server端接收,然后原路反馈操作成功与否信息。期间有些问题搞了好半天才弄好,故将在整理如下,以供日后使用和温习:
 
遇到的问题:
1.我使用的是TCP的send和recv函数,但是send函数是一次性通过多个包发送buf中的所有数据,而recv函数却是一个包一个包的接收,recv的返回值只是返回一个本次接收数据的格式,并不返回缓冲区还有多少个未接收。所以问题就出来了:send发送的数据,recv如何才能证明已经接收完了?目前想到的办法是一个笨办法,就是通过自己写一个socket_recv和socket_send函数,把recv和send函数封装进去,并且新定义的函数进入执行的时候先会发送一个待发送字符串长度的数据给接收端,待收到接收端反馈后,发送端才开始发送,且接收端开始循环接收,直到个数满足位置。
2.recv函数原型是这样的:int recv(int socketdp,char *buf,sizeof,0)但是每次接收一个字符串的时候其实是把字符串写入buf,并且写完后buf还是指向第一个位置,而不是指向最后一个位置。故在循环接收的时候,需要处理这个问题。
 
以下问题目前还未解决:
1.MFC段把字符串发送出去用的是串口,所以每个包最多也就是几个字节,故如果一个字符串发送的话,必定是分多个包发送出去的,所以client段的revnTTY程序必须保证循环接收完所有的数据后才能通过socket_send发送,不然程序循环实现起来会有困难。
 
源代码:
见附件,包括socket_recv.h,socket_send.h,client.c ,server.c,和MFC工程文件。
阅读(1324) | 评论(0) | 转发(0) |
0

上一篇:linux devices driver中文版

下一篇:xy071084

给主人留下些什么吧!~~