您好!欢迎光临工博士商城

爱普生机器人 服务商

产品:35    
联系我们
联系方式
  • 联系人:胡达
  • 电话:19921272665
  • 邮件:wqh@gongboshi.com
  • 手机:19921272665
  • 传真:021-60719770
站内搜索
 
新闻分类
  • 暂无分类
友情链接
首页 > 资料资讯 > 爱普生机器人:通讯方式socket的连接方式与例子
资料资讯
爱普生机器人:通讯方式socket的连接方式与例子
发布时间:2020-04-08        浏览次数:1669        返回列表
爱普生机器人:通讯方式socket的连接方式与例子

1.1、什么是socket
       socket是一种通信机制,可以应用于计算机不同进程之间通信,包括同一台计算机和网络中不同计算机之间的进程之间通信,结果就是支持分布在网络中的各个服务端/客户端的通信。
       socket的字面意思是插座,插座的作用提供电源,也就是所谓的服务端,相应的插头是客户端,插头插到插座里,联通得到相应的电压,也就是获得相应通信连接。
       需要注意的是:socket一旦建立连接,通信是双向通信。

u=1782276278,1219212506&fm=26&gp=0

1.2 socket连接方式
       socket连接方式用以下步骤来说明。
服务端:
        1)创建socket,也就是创建服务端(插座)
        2)服务器进程给套接字命名,调用blind函数
        3)服务器进程监听客户端的请求连接队列,调用listen函数
        4)服务器进程接受客服连接,调用accept函数,此时程序创建一个新的套接字专门处理一个客户连接,2)步骤的命名的套接字继续用来监听客户连接,一旦调用accept,则继续创建新的套接字。
客户端:
       1)创建一个未命名的套接字(插头)
       2)命名客户端套接字,根据服务端信息来命名客户端套接字
       3)指定服务器端地址(找到插座地址),调用connect函数,建立连接

timg (1)

本地客户端的例子:
client.c
//必要的头文件
#include
#include
#include
#include
#include
#include

int main(){
//1)设置变量
int sockfd;//用来装载创建套接字的结果
int len;
struct sockaddr_un address;//用来装载服务端给定的地址
int result;//用来装载是否连接成功的结果1表示成功,-1表示失败
char ch='A';
//2)创建客户端套接字
sockfd=socket(AF_UNIX,SOCK_STREAM,0);
//3)根据服务端,给套接字命名
address.sun_family=AF_UNIX;
strcpy(address.sun_path,"server_socket");
len=sizeof(address);
//4)连接到服务端套接字
result=connet(sockfd,(struct sockaddr*)&address,len);
if(result==-1){
perror("oops:client1");
exit(0);
}
//5)通过套接字进行读写操作
write(sockfd,&ch,1);//通过套接字,修改了ch变量
read(sockfd,&ch,1);//通过套接字,读取了ch变量
printf("char from server=%c\n",ch);
close(sockfd);//用完套接字后关闭
exit(0);
}

下面给出一个本地服务端的标准例子:
server1.c

//必要的头文件
#include
#include
#include
#include
#include
#include

int main(){
//1)创建必要的变量
int server_sockfd,client_sockfd;//分别用来装载创建的套接字的值
int server_len,client_len;//套接字地址的长度
struct sockaddr_un server_address;//装载套接字地址
struct sockaddr_un client_address;
//2)删除以前的套接字,创建一个未命名的套接字
unlink("server_socket");
server_sockfd=socket(AF_UNIX,SOCK_STREAM,0);
//3)命名套接字
server_address.sun_family=AF_UNIX;
strcpy(server_address.sun_path,"server_socket");
server_len=sizeof(server_address);
blind(server_sockfd,(struct sockaddr*)&server_address,server_len);
//4)创建连接队列,等待客户进行连接
listen(server_sockfd,5);//监听队列为5
while(1){
char ch;
printf("server wating\n");
//服务端接受一个连接
client_len=sizeof(client_address);
client_sockfd=accept(server_sockfd,(struct sockaddr*)&client_address,&client_lent);
//6)对接受的客户端的套接字进行读写
read(client_sockfd,&ch,1);
ch++;
write(client_sockfd,&ch,1);
close(client_sockfd);//用完套接字后需要关闭
}
}






更多信息请咨询:爱普生机器人

分享到: 


 

联系热线:19921272665 联系人:胡达 联系地址:上海市嘉定区江桥镇博园路 1333号

技术和报价服务:星期一至星期六8:00-22:00 爱普生机器人 服务商

返回
顶部