基于套接字通信的远程截屏显示与控制技术
2008-05-31 21:39:12 来源:WEB开发网bind(sktConnect,(struct sockaddr far *)&sockaddrin,sizeof(sockaddrin));
服务端监听网络:socket利用listen函数设置状态位,用来检测是否有到来的连接请求,然后调用accept函数,准备接收客户端连接信号,无连接请求时,服务进程被阻塞;
listen(sktConnect,1);
sktClient=accept(sktConnect,(struct sockaddr far *)&sockaddrin,& sockaddrlen);
初始化与创建客户端Winsock:首先利用AfxSocketInit函数判断参数lpwsaData是否为空,从而确定是否调用WSAStartup函数来填充WSADATA结构,随后同样调用socket函数创建客户端的套接字,给客户端Sockaddr_in结构赋值,地址类型和端口号与服务端相同;
套接字选项设置:使用setsockopt函数设置套接字选项,比如发送或者接收的超时设置,缓冲区的容量设置,使用ioctlsocket函数设置socket的I/O模式等;
int ret=ioctlsocket(sktClient,FIONBIO,(unsigned long*)&ul);
双方建立连接:客户端调用connect函数向服务端发出连接请求,当连接请求到来时,被阻塞服务端的accept函数生成一个新的字节流套接字,返回客户端Sockaddr_in结构变量,用带有客户端地址的套接字与客户端进行连接,然后向客户端返回接收信号;
connect(sktClient,(const struct sockaddr *)&sockaddrin,sizeof (sockaddrin));
收发数据:一旦客户端套接字接收到来自服务端的接受信号,则表示双方已经实现连接,任何一方均可使用Send/Write函数和Recv/Read函数向对方发送或者接收数据;
send(sktClient,chrSend,10,0);recv(sktClient,chrReceive,10,0);
关闭套接字与winsock注销:服务端和客户端可以通过调用closesocket函数关闭套接字上的所有发送和接收操作,撤销套接字并且中断连接。同时,winsock服务的动态链接库在使用结束后,应用程序必须调用WSACleanup函数将其注销,并释放分配的资源。
- ››基于IP地址的vsftp服务器
- ››基于MySQL 水平分区的优化示例
- ››基于CentOS5的Linux下pptp和openvpn的搭建及配置
- ››基于JavaScript的网页版塔防游戏
- ››基于Android平台 QQ大战360手机游戏爆红
- ››基于Windows Azure的云计算应用设计
- ››基于AES算法实现对数据的加密
- ››基于SoPC目标板Flash编程设计的创建及应用
- ››基于SolidWarks齿轮机构的运动分析与仿真
- ››基于Windwos Server 2008故障转移群
- ››基于JavaScript的REST客户端框架
- ››基于JavaScript和CSS的Web图表框架横向对比
更多精彩
赞助商链接