socket通信Socket异步通信
socket通信 时间:2021-06-07 阅读:(
)
Socket通信编程与上网方式(wifi,有线,无限上网卡等)有什么关系吗?
没有关系,socket通信编程对物理网络媒介类型不敏感。
分两种情形说明:
1. 在设备系统内部,socket不需要通过网络进行通信,所以系统内部的socket通信不依赖上网方式。
2. 在不同设备之间,socket通信一般基于IPv4/IPv6,而IP的一大功能就是屏蔽了网络层以下(包括链路层和物理层)的不同特征,使应用程序在使用IP报文进行通信时在任何网络媒介上都使用相同的方式。
socket在IP之上,更不需要考虑物理网络是有线还是无线等因素。
socket编程,只需要掌握几个socket接口的使用,理清socket通信对象就可以了。
怎么利用socket实现进程间通信
用socket实现进程通信 ,和socket的普通用法一样,只不过服务端IP为127.0.0.1 而已
下面附上代码示例:
//服务器端代码?进程1
#include?
#include?
#include?
#include?
#include?/in.h>
#include?
#include?
#include?
int?main(int?argc,?char?*argv[])
{
int?sock;
//sendto中使用的对方地址
struct?sockaddr_in?toAddr;
//在recvfrom中使用的对方主机地址
struct?sockaddr_in?fromAddr;
int?recvLen;
unsigned?int?addrLen;
char?recvBuffer[128];
sock?=?socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
if(sock?0)
{
?printf("创建套接字失败了.
");
?exit(0);
}
memset(&fromAddr,0,sizeof(fromAddr));
fromAddr.sin_family=AF_INET;
fromAddr.sin_addr.s_addr=htonl(INADDR_ANY);
fromAddr.sin_port?=?htons(4000);
if(bind(sock,(struct?sockaddr*)&fromAddr,sizeof(fromAddr))<0)
{
?printf("bind()?函数使用失败了.
");
?close(sock);
?exit(1);
}
while(1){
addrLen?=?sizeof(toAddr);
if((recvLen?=?recvfrom(sock,recvBuffer,128,0,(struct?sockaddr*)&toAddr,&addrLen))<0)
{
?printf("()recvfrom()函数使用失败了.
");
?close(sock);
?exit(1);
}
if(sendto(sock,recvBuffer,recvLen,0,(struct?sockaddr*)&toAddr,sizeof(toAddr))!=recvLen){
printf("sendto?fail
");
close(sock);
exit(0);
}
return?0;
}
}?//客户端代码?进程2
#include?
#include?
#include?
#include?
#include?/in.h>
#include?
#include?
#include?int?main(int?argc,?char?*argv[])
{
if(argc?2)
{
?printf("请输入要传送的内容.
");
?exit(0);
}
int?sock;
//sendto中使用的对方地址
struct?sockaddr_in?toAddr;
//在recvfrom中使用的对方主机地址
struct?sockaddr_in?fromAddr;unsigned?int?fromLen;
char?recvBuffer[128];
sock?=?socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);if(sock?0)
{
?printf("创建套接字失败了.
");
?exit(1);
}memset(&toAddr,0,sizeof(toAddr));
toAddr.sin_family=AF_INET;
toAddr.sin_addr.s_addr=_addr("127.0.0.1");
toAddr.sin_port?=?htons(4000);if(sendto(sock,argv[1],strlen(argv[1]),0,(struct?sockaddr*)&toAddr,sizeof(toAddr))?!=?strlen(argv[1]))
{
?printf("sendto()?函数使用失败了.
");
?close(sock);
?exit(1);
}fromLen?=?sizeof(fromAddr);
if(recvfrom(sock,recvBuffer,128,0,(struct?sockaddr*)&fromAddr,&fromLen)<0)
{
?printf("()recvfrom()函数使用失败了.
");
?close(sock);
?exit(1);
}
printf("recvfrom()?result:%s
",recvBuffer);
close(sock);}Socket异步通信
1、所谓同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到返回的值或消息后才往下执行其他的命令。
2、异步,就是分时处理,服务器接收到客户端请求后并不是立即处理,而是等待服务器比较空闲的时候加以处理,可以避免涌塞。
Socket:
1、网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
2、Socket的英文原义是“孔”或“插座”。
作为BSD UNIX的进程通信机制,取后一种意思。
通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。
在上的主机一般运行了多个服务软件,同时提供几种服务。
每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。
Socket正如其英文原意那样,像一个多孔插座。
一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。
客户软件将插头插到不同编号的插座,就可以得到不同的服务。
Sharktech(鲨鱼服务器商)我们还是比较懂的,有提供独立服务器和高防服务器,而且性价比都还算是不错,而且我们看到有一些主机商的服务器也是走这个商家渠道分销的。这不看到鲨鱼服务器商家洛杉矶独立服务器纷纷促销,不限制流量的独立服务器起步99美元,这个还未曾有过。第一、鲨鱼机房服务器方案洛杉矶机房,默认1Gbps带宽,不限流量,自带5个IPv4,免费60Gbps / 48Mpps DDoS防御。C...
提速啦(www.tisula.com)是赣州王成璟网络科技有限公司旗下云服务器品牌,目前拥有在籍员工40人左右,社保在籍员工30人+,是正规的国内拥有IDC ICP ISP CDN 云牌照资质商家,2018-2021年连续4年获得CTG机房顶级金牌代理商荣誉 2021年赣州市于都县创业大赛三等奖,2020年于都电子商务示范企业,2021年于都县电子商务融合推广大使。资源优势介绍:Ceranetwo...
老鹰主机HawkHost是个人比较喜欢的海外主机商,如果没有记错的话,大约2012年左右的时候算是比较早提供支付宝付款的主机商。当然这个主机商成立时间更早一些的,由于早期提供支付宝付款后,所以受众用户比较青睐,要知道我们早期购买海外主机是比较麻烦的,信用卡和PAYPAL还没有普及,大家可能只有银联和支付宝,很多人选择海外主机还需要代购。虽然如今很多人建站少了,而且大部分人都用云服务器。但是老鹰主机...
socket通信为你推荐
qq代挂代挂qq之后自己就上不去了企鹅医生共享体检真的方便吗草莓派怎么做草莓派?iso20000认证ISO20000认证orphanremovalorphan是什么意思腾讯年终奖腾讯外聘员工与正式员工的区别是什么?js后退javascript怎么禁用浏览器后退按钮超级播放器推荐个好的视频播放器数据库界面如何创建数据库中信银行理财宝中信银行香卡属于理财宝吗?
传奇服务器租用 com域名价格 动态域名解析软件 花生壳域名贝锐 mediafire下载 特价空间 网盘申请 国外在线代理 本网站服务器在美国 好看qq空间 全站静态化 e蜗 国外免费全能空间 hinet hdd 申请网页 环聊 上海电信测速网站 云营销系统 全能空间 更多