ubuntu下安装rabbitmq-c-master

UDP特点:

无连接

基于消息的数据传输服务

不可靠

一般情况下UDP更加高效。

UDP注意点:

UDP报文可能会丢失、重复

UDP报文可能会乱序

UDP缺乏流量控制

UDP协议数据报文截断

recvfrom返回0,不代表连接关闭,因为udp是无连接的。

ICMP异步错误

UDP connect

UDP外出接口的确定

套接口具有两个属性:

本地地址  getsockname()

远程地址  getpeername()

调用sento时进行绑定。

echosrv.c

#include <unistd.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <stdlib.h>

#include <stdio.h>

#include <errno.h>

#include <string.h>

#define ERR_EXIT(m) \

do \

{ \

perror(m); \

exit(EXIT_FAILURE); \

} while(0)

void echo_srv(int sock)

{

char recvbuf[1024] = {0};

struct sockaddr_in peeraddr;

socklen_t peerlen;

int n;

while (1)

{

peerlen = sizeof(peeraddr);

memset(recvbuf, 0, sizeof(recvbuf));

n = recvfrom(sock, recvbuf, sizeof(recvbuf), 0, (struct sockaddr*)&peeraddr, &peerlen);

if (n == -1)

{

if (errno == EINTR)

continue;

ERR_EXIT("recvfrom");

}

else if (n > 0)

{

fputs(recvbuf, stdout);

sendto(sock, recvbuf, n, 0, (struct sockaddr*)&peeraddr, peerlen);

}

}

close(sock);

}

int main(void)

{

int sock;

if ((sock = socket(PF_INET, SOCK_DGRAM, 0)) < 0)

ERR_EXIT("socket");

struct sockaddr_in servaddr;

memset(&servaddr, 0, sizeof(servaddr));

servaddr.sin_family = AF_INET;

servaddr.sin_port = htons(5188);

servaddr.sin_addr.s_addr = htonl(INADDR_ANY);

if (bind(sock, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0)

ERR_EXIT("bind");

echo_srv(sock);

return 0;

}

echocli.c

#include <unistd.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#include <stdlib.h>

#include <stdio.h>

#include <errno.h>

#include <string.h>

#define ERR_EXIT(m) \

do \

{ \

perror(m); \

exit(EXIT_FAILURE); \

} while(0)

void echo_cli(int sock)

{

struct sockaddr_in servaddr;

memset(&servaddr, 0, sizeof(servaddr));

servaddr.sin_family = AF_INET;

servaddr.sin_port = htons(5188);

servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");

connect(sock, (struct sockaddr*)&servaddr, sizeof(servaddr));

int ret;

char sendbuf[1024] = {0};

char recvbuf[1024] = {0};

while (fgets(sendbuf, sizeof(sendbuf), stdin) != NULL)

{

/*sendto(sock, sendbuf, strlen(sendbuf), 0, (struct sockaddr*)&servaddr, sizeof(servaddr));*/

/*sendto(sock, sendbuf, strlen(sendbuf), 0, NULL, 0);*/

send(sock, sendbuf, strlen(sendbuf), 0);

ret = recvfrom(sock, recvbuf, sizeof(recvbuf), 0, NULL, NULL);

if (ret == -1)

{

if (errno == EINTR)

continue;

ERR_EXIT("recvfrom");

}

fputs(recvbuf, stdout);

memset(sendbuf, 0, sizeof(sendbuf));

memset(recvbuf, 0, sizeof(recvbuf));

}

close(sock);

}

int main(void)

{

int sock;

if ((sock = socket(PF_INET, SOCK_DGRAM, 0)) < 0)

ERR_EXIT("socket");

echo_cli(sock);

return 0;

}

trun.c

#include <unistd.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <stdlib.h>

#include <stdio.h>

#include <errno.h>

#include <string.h>

#define ERR_EXIT(m) \

do \

{ \

perror(m); \

exit(EXIT_FAILURE); \

} while(0)

int main(void)

{

int sock;

if ((sock = socket(PF_INET, SOCK_DGRAM, 0)) < 0)

ERR_EXIT("socket");

struct sockaddr_in servaddr;

memset(&servaddr, 0, sizeof(servaddr));

servaddr.sin_family = AF_INET;

servaddr.sin_port = htons(5188);

servaddr.sin_addr.s_addr = htonl(INADDR_ANY);

if (bind(sock, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0)

ERR_EXIT("bind");

sendto(sock, "ABCD", 4, 0, (struct sockaddr*)&servaddr, sizeof(servaddr));

char recvbuf[1];

int n;

int i;

for (i=0; i<4; i++)

{

n = recvfrom(sock, recvbuf, sizeof(recvbuf), 0, NULL, NULL);

if (n == -1)

{

if (errno == EINTR)

continue;

ERR_EXIT("recvfrom");

}

else if(n > 0)

printf("n=%d %c\n", n, recvbuf[0]);

}

return 0;

}

makefile:

.PHONY:clean all

CC=gcc

CFLAGS=-Wall -g

BIN=echosrv echocli trunc

all:$(BIN)

%.o:%.c

$(CC) $(CFLAGS) -c $< -o [email protected]

clean:

rm -f *.o $(BIN)

ubuntu下安装rabbitmq-c-master

时间: 2024-11-08 04:41:28

ubuntu下安装rabbitmq-c-master的相关文章

ubuntu下安装rabbitMQ

一.环境准备 rabbitMQ需要erlang语言的支持,因此需要先安装erlang语言 二.下载     http://www.erlang.org/download/opt_src_17.3_tar.gz    并解压 三.安装     ./configure --prefix=/home/liyixiang/erlang 注:     可能会报错 configure: error: No curses library functions found configure: error: /b

Ubuntu下安装nginx支持rtmp和http流媒体方案

最近公司要整理一套视频点播和直播的方案,本身对这块不是很熟悉,翻阅了大量的资料,最终算是了解一下,特记录下,第一套方案,当然是最简单的nginx+http的方案,这个方案支持android和pc以及苹果端,是比较普遍的做法,下面详细记录下在Ubuntu下安装的整个过程,过程参考另一篇博客而来,只是整理下最新的各组件包. step1准备ubuntu的环境: sudo apt-get update step2 安装必要的一些libs: sudo apt-get install build-essen

ubuntu 下安装git 并上传代码至github

参考博客 http://www.xitongzhijia.net/xtjc/20150320/42297.html http://blog.chinaunix.net/uid-17188120-id-4650534.html 1.Ubuntu下安装Git Ubuntu14.04 LTS默认是已经安装Git的,可以使用 git –version 测试是否安装. 如果没有安装,使用命令: sudo apt-get install git git-core 安装git 2.ssh认证 在Ubuntu下

Redis(三)-Ubuntu下安装

Ubuntu 下安装 在 Ubuntu 系统安装 Redi 可以使用以下命令: $sudo apt-get update $sudo apt-get install redis-server 启动 Redis $ redis-server 查看 redis 是否启动? $ redis-cli 以上命令将打开以下终端: redis 127.0.0.1:6379> 127.0.0.1 是本机 IP ,6379 是 redis 服务端口.现在我们输入 PING 命令. redis 127.0.0.1:

Ubuntu下安装JDK以及相关配置

1.查看系统位数,输入以下命令即可 getconf LONG_BIT 2.下载对应的JDK文件,我这里下载的是jdk-8u60-linux-64.tar.gz 3.创建目录作为JDK的安装目录,这里选择安装位置为:/usr/java/ sudo mkdir /usr/java 4.解压文件带/usr/java/目录下,文件下载的位置是在下载目录下的 cd 下载sudo tar zxvf jdk-8u60-linux-x64.tar.gz -C /usr/java/ 5.进入到/usr/java/

ubuntu下安装jdk

ubuntu下安装jdk 只需要三步: sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java8-installer 下完检查一下:java -version   查看jdk的版本

ubuntu下安装git,sublime,nodejs

用的是VMware10.0版本的虚拟机,很早之前下载的今天就直接用了,安装挺简单记得需要一个序列号.在这里:http://mirrors.163.com/ubuntu-releases/15.04/ubuntu-15.04-desktop-i386.iso 下载的ubuntu15.04ISO镜像(文件挺大还是用迅雷下载吧能快点),下载好之后就可以自定义创建新的虚拟机了基本就是按照VM安装向导提示安装,最后注意在虚拟机设置点击CD/DVD(SATA)用ISO映像文件启动不然会提示“系统不存在”.在

ubuntu下安装mysql出现FATAL ERROR: Could not find mysqld的处理

ubuntu下安装mysql出现FATAL ERROR: Could not find mysqld的处理 错误信息: #./bin/mysql_install_db –user=mysql FATAL ERROR: Could not find mysqld The following directories were searched: /usr/libexec /usr/sbin /usr/bin If you compiled from source, you need to run '

ubuntu 下安装 apache php mysql

ubuntu 安装 apache+php+mysql1.打开终端,输入"sudo apt-get install apache2",回车;(安装apache2.0或2.x新版本,系统会自动查找新的版本)2.如有密码请再输入管理员密码,回车3.输入"Y",回车4.apache2.X 安装完成5.验证apache2.x安装是否完成,在浏览器中打开http://localhost/或者http://127.0.0.1.如果出现It works!那证明成功;6.打开终端,输

ubuntu 下安装配置open-iscsi并自动挂载

1.安装open-iscsi apt-get install open-iscsi 2.发现iscsi-target(ISCSI服务器IP:192.168.1.104) iscsiadm -m discovery -t sendtargets -p 192.168.1.104 3.设置开机自动登录到iscsi-target iscsiadm -m node -T iqn.2006-01.com.openfiler:tsn.6f5d0fb29fc9 -p 192.168.1.104 –op upd