辅助函数: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 ipv6简单tcp/udp socket通信

  • 2013年11月04日 16:16
  • 3KB
  • 下载

linux_socket_sample_udp

  • 2015年06月24日 14:46
  • 20KB
  • 下载

Linux网络编程 - TCP Socket 简单练习:新进程辅助通信

补充: 在进行地址转换时用inet_pton [cpp] view plain copy  print? //将ip地址转换为32位网络地址 i...

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

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

Linux C Socket UDP编程介绍及实例

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

Windows/Linux C语言的Socket编程例子(TCP和UDP)

最近看了一些网络编程的书籍,一直以来总感觉网络编程神秘莫测,其实网络编程入门还是很容易学的,下面这些代码是我在linux下编写的,已经运行过了,编译之后就可以运行了。有不足之处希望大家多多指出,共同学...

Linux下C语言实现UDP Socket编程

转自:http://blog.csdn.net/tianshuai11/article/details/7027444 发送方: /* * File: main.c * Author: ...

linux基础之 创建一个UDP socket

UDP socket
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:辅助函数:Linux UDP socket
举报原因:
原因补充:

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