`

C__Package Unix Socket

阅读更多
参考AUPE封的

#include "xsock.h"
#include <stdio.h>
#include <string.h>
#include <errno.h>

int setSockAddr(struct sockaddr_in *addr, const int family, const char *host, const int port)
{
    if ( ! (addr != NULL && host != NULL && port > 0) )
        return -1;
    addr->sin_family = family;  //  AF_INET
    addr->sin_addr.s_addr = inet_addr(host);
    addr->sin_port = htons(port);
    return 0;
}

int initServerSock(const int type, const struct sockaddr_in *addr, int lsn)
{
    int fd = -1;
    int err = 0;
    if ((fd = socket(addr->sin_family, type, 0)) < 0)
        return -1;

    if (bind(fd, (struct sockaddr *)addr, sizeof(*addr)) < 0)
    {
        err = errno;
        goto errout;
    }

    if (type == SOCK_STREAM || type == SOCK_SEQPACKET)
    {
        if (listen(fd, lsn) < 0)
        {
            err = errno;
            goto errout;
        }
    }
    
    return fd;

errout:
    close(fd);
    errno = err;
    printf("%d : %s\n",errno,strerror(errno));
    return -1;
}

int connect_retry(const int fd, const struct sockaddr_in *addr)
{
    int mxaSleep = 64;
    int nsec;

    for (nsec = 1; nsec <= mxaSleep; nsec <<=1)
    {
        if (connect(fd, (struct sockaddr *)addr, sizeof(*addr)) == 0)
        {
            return 0;
        }
        sleep(nsec);
    }
    return -1;
}

分享到:
评论

相关推荐

    Linux_Unix设计思想.pdf

    6. **网络编程**:Unix/Linux提供了丰富的网络编程接口,如socket,支持TCP/IP协议栈,使得开发网络应用变得容易。 7. **开放源码和社区**:Linux作为开源项目,其发展得益于全球开发者社区的贡献。开源模式促进了...

    Unix Echo服务器和客户端(C语言)

    本文将深入探讨一个基于C语言实现的Unix Echo服务器和客户端系统。这个系统由两个主要部分组成:Echo服务器和Echo客户端,它们通过TCP套接字进行通信。下面我们将详细讨论相关知识点。 首先,我们要了解**TCP...

    linux ace socket

    6. **线程池与并发处理**:ACE提供了`ACE_Thread_Manager`和`ACE_Work_Package`等工具,可以轻松实现线程池,有效管理并发任务,优化系统资源的利用率。 7. **错误处理与异常安全**:ACE库的类和方法通常都封装了...

    linux.rar_Linux/Unix编程_Unix_Linux_

    8. **编译与链接**:在Linux环境下,我们通常使用gcc/g++编译C/C++程序,链接器ld负责将编译后的目标文件和库文件整合成可执行文件。 9. **Makefile**:用于自动化构建项目的工具,方便管理多个源文件的编译过程。 ...

    计算机操作系统(基于UNIX)

    UNIX提供了丰富的系统调用,如`fork`创建子进程,`exec`加载并执行新程序,`pipe`和`socket`实现进程间通信,`open`、`read`、`write`、`close`操作文件。 八、源代码管理和版本控制 UNIX系统上常用的版本控制系统...

    前端开源库-abstract-socket

    在Unix/Linux系统中,它通过特殊的文件路径(例如`/tmp/abstract`)来标识,而在Windows系统中,抽象套接字则通过一个前导空字节的命名管道来实现。"abstract-socket"库解决了在Node.js中跨平台使用抽象套接字的问题...

    softap_ap6212a0_tinav2.1_验证通过_旧版本的系统_20170915_1223没有外层目录.7z

    将dnsmasq.tar.bz2解压并替换package/network/services下的dnsmasq文件夹。 3、配置内核: rootroot@cm-System-Product-Name:/home/wwt/softap_ap6212a0_tinav2.1$ make kernel_menuconfig [*] ...

    linux-Unix程序员手册第四研究版

    5. **网络编程**:Unix/Linux提供了丰富的网络编程接口,如socket API,用于构建TCP/IP、UDP等网络应用。 6. **标准I/O库**:C语言中的标准输入输出库(stdio.h),包括printf/scanf家族,提供文本I/O功能。 7. **...

    c3h-client-master.zip_软件设计/软件工程_Unix_Linux_

    4. **网络编程**:由于涉及到H3C认证,可能包含TCP/IP协议、socket编程等内容。 5. **软件框架和API**:"inode 7.0"可能是一个特定框架,需要理解其接口和使用方法。 6. **自动化测试**:编写和执行单元测试、集成...

    AndroidWIFI架构和控制流程.pdf

    代码可以见 wpa_supplicant/os_unix.c 中的 os_program_init() 函数。如果配置不对,会出现以下错误:E/WifiHW ( ): Unable to open connection to supplicant on "/data/system/wpa_supplicant/.

    Unix Domain Sockets for Tcl-开源

    4. 在客户端,打开到服务器的连接:`set clientSocket [unixsocket::connect /path/to/socket]` 5. 通过套接字发送和接收数据:`puts $clientSocket "Hello"` 和 `set response [gets $clientSocket]` 通过这些基本...

    分布式文件系统fastdfs架构剖析及配置优化

    纯C实现,支持Linux、FreeBSD等UNIX系统 类google FS,不是通用的文件系统,只能通过专有API访问,目前提供了C、Java和PHP API 为互联网应用量身定做,解决大容量文件存储问题,追求高性能和高扩展性 FastDFS可以...

    PyPI 官网下载 | tidevice-0.4.8.tar.gz

    PyPI(Python Package Index)是Python开发者的重要资源库,提供了丰富的Python库供全球开发者下载和使用。本文将围绕“tidevice-0.4.8.tar.gz”这个资源进行解析,探讨其在分布式系统、云原生环境以及与Zookeeper的...

    socket——Richard Stevens' sock program RPM 64位版

    While sock is contained in the code package accompanying UNIX Network Programming, this code is also getting dated. Recently I came across a standalone version of sock on a T/TCP project page. It ...

    socket——Richard Stevens' sock program RPM 32位版

    While sock is contained in the code package accompanying UNIX Network Programming, this code is also getting dated. Recently I came across a standalone version of sock on a T/TCP project page. It ...

    PostgreSQL的Go语言驱动pq.zip

    Unix socket support Notifications: LISTEN/NOTIFY 示例代码: package main import (  _ "github.com/bmizerany/pq"  "database/sql" ) func main() {  db, err := sql.Open("postgres",...

    史上最LOW的PHP连接池解决方案.docx

    这段配置指定了Lua代码缓存、错误处理等设置,并定义了一个监听Unix Domain Socket的server块,其中使用Lua代码初始化了一个Redis连接池。 ##### Lua脚本实现 接下来,需要创建一个名为`redis.lua`的Lua脚本来处理...

    go系统编程(英文版)

    well as developing a Unix socket server and a Unix socket client. As you will see, at the end of each chapter there are some exercises for you to do in order to gain more information about important ...

    基于javatcpsocket通信的拆包和装包源码-golang:学走

    socket通信的拆包和装包源码 go go study notes go_learning 第一章(ch1) 开发环境 GOPATH go 1.8 以后Unix默认$HOME/go Windows默认%USERPROFILE%/go Mac上修改~/.bash_profile设置 go command go version (查看go...

    gnutls_nettle.zip

    这两个库在Linux和Unix系统中被广泛应用,尤其是在需要处理TLS(Transport Layer Security)和SSL(Secure Socket Layer)协议的软件开发中。 gnutls是开源的,提供了一整套强大的安全传输层协议功能,包括SSLv2、...

Global site tag (gtag.js) - Google Analytics