随笔分类 -  网络编程

摘要:主要有三种方案:(1)调用Alarm,它在指定超时期满时产生SIGALRM信号,此方法涉及信号处理,而信号处理在不同的实现上存在差异,而且可能干扰进程中现有的ALARM调用。(2)在SELECT,即多路复用中阻塞等待IO,因为select有内置的时间限制,以此代替直接阻塞在read或write上的调用。(3)使用较新的SO_RCVTIMEO和SO_SNDTIMEO套接字选项,这个方法的问题在于并非所有的实现都支持这两个套接字选项。一、首先看一个如何调用Alarm,它主要是通过对慢系统调用产生中断信号来完成。int connect_timeo(int sockfd, const SA *sapt 阅读全文
posted @ 2012-03-17 23:51 杨少宁 阅读(2286) 评论(0) 推荐(1) 编辑
摘要:先描述一下整体的流程及思路: 客户端从标准输入读取一行文本,发送给服务器,服务器收到文本后,将文本直接返回给客户端,即回显。整体采用TCP协议完成。 客户端大致代码:socket,connect函数略去char sendline[1024],recvline[1024];while( fgets(sendline, 1024, stdin) != NULL){ //从标准输入读取 writen(sockfd,sendline,strlen(sendline)); //发送给服务器,Sockfd就是与服务器联通的Socket if(readline(sockfd, recvlin... 阅读全文
posted @ 2012-03-15 19:05 杨少宁 阅读(4771) 评论(3) 推荐(3) 编辑
摘要:为允许在线程或进程间共享数据,同步通常是必须的。常见的同步方式有:互斥锁、条件变量、读写锁、信号量。另外,对于进程间的同步,也可以通过进程间通信的方式进行同步,包括管道(无名管道、有名管道)、信号量、消息队列、共享内存、远程过程调用,当然也可以通过Socket来进行网络控制。一. 互斥锁和条件变量是同步的基本组成部分 互斥锁和条件变量出自Posix.1线程标准,多用来同步一个进程中各个线程。但如果将二者存放在多个进程间共享的内存区中,它们也可以用来进行进程间的同步。1. 互斥锁用于保护临界区,以保护任何时刻只有一个线程在执行其中的代码,其大体轮廓大体如下: lock_the_mutex... 阅读全文
posted @ 2012-03-13 23:09 杨少宁 阅读(9499) 评论(6) 推荐(3) 编辑
摘要:利用串口进行通信,当发送方(A)将数据写入串口后,通过无线或有线方式将数据传送给接收方(B),B通过调用串口读方法comm.read(参数)即可将数据读出。原理十分简单,但最近在利用串口处理SM-42无线传输时,数据总是一段一段的传到B,并不能在comm_DataReceived方法中单纯使用read方法将数据接收完全。我知道用缓存机制,但由于经验少(正在实习),到网上找了找大牛们的方法,并结合自己的理解,发现有两种方法可以处理。方法一:comm_DataReceived(Comm控件的数据接收方法,当有数据来临时会触发)会创建一个线程(悲哀,因为之前不知道它另辟线程,所以自己编写了一个线程处 阅读全文
posted @ 2011-01-21 11:30 杨少宁 阅读(13377) 评论(24) 推荐(8) 编辑

点击右上角即可分享
微信分享提示