辅助函数:Linux UDP socket

原创 2007年10月05日 19:57:00
Linux下UDP socket辅助函数
dgram.h:
#ifndef _DGRAM_H_
    
#define _DGRAM_H_
    
int make_dgram_server_socket(int);
    
int make_dgram_client_socket(void);
    
int make_internet_address(char *,int,struct sockaddr_in *);
    
int get_internet_address(char *,int *,struct sockaddr_in *);
#endif

dgram.c:
/*******************************************************************
 * dgram.c
 * support functions for datagram based programs
 
*/

#include 
<stdio.h>
#include 
<unistd.h>
#include 
<sys/types.h>
#include 
<sys/socket.h>
#include 
<netinet/in.h>
#include 
<arpa/inet.h>
#include 
<netdb.h>
#include 
<string.h>

#define HOSTLEN 256

int make_internet_address(char *,int,struct sockaddr_in *);

/*******************************************************************
 * make sever dgram socket
 
*/

int make_dgram_server_socket(int portnum) {
    
struct sockaddr_in saddr;            // build our address here
    char hostname[HOSTLEN];                // addrss
    int sock_id;                    // the socket

    sock_id 
= socket(PF_INET,SOCK_DGRAM,0);        // get a socket
    if(sock_id == -1{
        perror(
"Create socket error");
        
return -1;
    }


    
// build address and bind it to socket
    gethostname(hostname,HOSTLEN);            // where am I?
    make_internet_address(hostname,portnum,&saddr);

    
if(bind(sock_id,(struct sockaddr *)&saddr,sizeof(saddr)) != 0{
        perror(
"Bind socket error");
        
return -1;
    }


    
return sock_id;
}
// make_dgram_server_socket

/*******************************************************************
 * make client dgram socket
 
*/

int make_dgram_client_socket() {    
    
return socket(PF_INET,SOCK_DGRAM,0);
}


/*******************************************************************
 * constructor for an Internet socket address, uses hostname and port
 * (host,port) -> *addrp
 
*/

int make_internet_address(char * hostname,int port,struct sockaddr_in *addrp) {
    
struct hostent *hp;

    bzero((
void *)addrp,sizeof(struct sockaddr_in));
    hp 
= gethostbyname(hostname);
    
if(hp == NULL) {
        perror(
"Get host name error");
        
return -1;
    }


    bcopy(hp 
-> h_addr,(void *)&addrp->sin_addr,hp->h_length);
    addrp
->sin_port = htons(port);
    addrp
->sin_family = AF_INET;

    
return 0;
}


/*******************************************************************
 * extracts host and port from an internet socket address
 * addrp -> (host,port)
 
*/

int get_internet_address(char *host,int len,int *portp,struct sockaddr_in *addrp) {
    strncpy(host,inet_ntoa(addrp
->sin_addr),len);
    
*portp = ntohs(addrp->sin_port);

    
return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Linux下socket编程的辅助函数:select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET

最近在研究Linux下socket编程,上面说是辅助函数其实也不太准确,不过在Linux下socket编程中确实比较常用 在网上找了篇文章,把其中的主要部分转过来了。 select...

【Linux C代码分享二】UDP Socket示例程序:使用fgets函数获取屏幕输入

前一篇文章的UDP Socket示例程序的Client是循环发送固定的一句话,有时候我们希望像聊天软件一样可以自己输入数据。读取屏幕字符串可以使用gets函数和fgets函数,然而因为安全方面的因素,...

linux_socket_sample_udp

  • 2015-06-24 14:46
  • 20KB
  • 下载

linux下socket通信代码的开发及总结---UDP

总得来说socket代码的开发是比较简单的一块,下面总结一下socket通信: 1. socket通信的基本流程: a) 通过套接字和结构体进行声明和初始化 #include struc...

Linux之UDP SOCKET 编程

基本的UDP编程1.UDP编程框架首先我们需要知道UDP到底是什么,有什么特点? UDP(user datagram protocol)的中文叫用户数据报协议,属于传输层。UDP是面向非连接的协议...

linux下C/C++网络编程基本:socket实现tcp和udp的例子

简单的linux下socket编程,分别基于TCP和UDP协议实现的简单程序 linux下socket编程可以概括为以下几个函数的运用: socket() bind() listen()...

Linux C Socket UDP编程介绍及实例

1、UDP网络编程主要流程 UDP协议的程序设计框架,客户端和服务器之间的差别在于服务器必须使用bind()函数来绑定侦听的本地UDP端口,而客户端则可以不进行绑定,直接发送到服务器地址的某个端口地址...

linux下搭建能同时接收UDP和TCP连接的socket并发多线程服务器

同时接收UDP和TCP连接的socket并发多线程服务器

Linux高级编程复习 第九章 信号量同步_socket网络编程基础_TCP_UDP

待续
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)