辅助函数:Linux TCP socket

原创 2007年10月05日 19:59:00
Linux下辅助函数 TCP socket:
/**//* socklib.c
 *
 * This file contains functions lots when writing internat
 * client/server programs. The two main functions here are:
 *
 * int make_srver_socket(portnum) return server socket
 *
 * int make_server_socket_q(portnum,backlog)
 *
 * int connect_to_server(char *hostname,int portnum)
 
*/

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

#define HOSTLEN 256
#define BACKLOG 1

int make_server_socket_q(int,int);

int make_server_socket(int portnum) ...{
    
return make_server_socket_q(portnum,BACKLOG);
}


int make_server_socket_q(int portnum,int backlog) ...{
    
struct sockaddr_in saddr;            // build out address here
    struct hostent *hp;                // this is part of our
    char hostname[HOSTLEN];                // address
    int sock_id;                    // the socket

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


    
// build address and build it to socket
    bzero((void *)&saddr,sizeof(saddr));        // clear out struct
    gethostname(hostname,HOSTLEN);            // where am I?
    hp = gethostbyname(hostname);            // get info about host

    bcopy((
void *)hp -> h_addr,(void *)&saddr.sin_addr,
        hp 
-> h_length);
    saddr.sin_port 
= htons(portnum);        // fille in socket port
    if(bind(sock_id,(struct sockaddr *)&saddr,
        
sizeof(saddr)) != 0...{
        perror(
"Bind socket error");
        
return -1;
    }

    
    
// arrange for incoming calls
    if(listen(sock_id,backlog) != 0...{
        perror(
"Listen socker error");
        
return -1;
    }

    
    
return sock_id;
}


int connect_to_server(char *host,int portnum) ...{
    
int sock;                    
    
struct sockaddr_in servadd;            // the number to call
    struct hostent *hp;                // used to get number

    
// Step 1:Get a socket
    sock = socket(AF_INET,SOCK_STREAM,0);
    
if(sock == -1...{
        perror(
"Create socket error");
        
return -1;
    }

    
    
// Step 2:connect to server
    bzero(&servadd,sizeof(servadd));        // zero the address
    hp = gethostbyname(host);            // lookup host's ip #
    if(hp == NULL)
        
return -1;
    bcopy(hp 
-> h_addr,(struct sockaddr *)&servadd.sin_addr,
        hp 
-> h_length);
    servadd.sin_port 
= htons(portnum);        // fill in port number
    servadd.sin_family = AF_INET;            // fill in socket type

    
if(connect(sock,(struct sockaddr *)&servadd,
        
sizeof(servadd)) != 0...{
        perror(
"Connect socket error");
        
return -1;
    }

    
    
return sock;
}

 

[Linux] c 语言tcp socket 示例从简单到复杂

上面例子是最基本的tcp socket 流程,没有错误处理,下面写一个模块 wrap.c 给socket函数加上错误处理代码包装成新的函数; 服务端也不能接收多个客户端请求,使用fork()函数创建一...
  • tzshlyt
  • tzshlyt
  • 2016年11月19日 14:54
  • 1601

Linux C Socket TCP编程介绍及实例

1、TCP网络编程主要流程 图1.1 注意:图1.1中可以看到close指向read并且标有结束连接的指示,可能有些人会有疑问,这个标注的意思是服务器在处理客户端的时候是循环读取的,如果客户端没有...
  • lell3538
  • lell3538
  • 2016年11月25日 15:38
  • 1975

关于linux下的TCP 的socket server和client,我的理解

CSDN的博客中有这样一篇博客点击打开链接,是关于TCP的socket编程的,我想基于我的理解解释一下,毕竟原文只给出了纯粹的代码, 我们知道上图是它们之间的工作模式,基本编程的规则也是...
  • u010467538
  • u010467538
  • 2016年09月04日 19:55
  • 1815

Linux Socket编程:基于TCP/IP的客户端与服务端通讯实例

Linux Socket编程:基于TCP/IP的客户端与服务端通讯实例服务端代码#include #include #include #include #include #include i...
  • techping
  • techping
  • 2017年03月29日 17:49
  • 1284

辅助函数:Linux UDP socket

Linux下UDP socket辅助函数dgram.h:#ifndef _DGRAM_H_    #define _DGRAM_H_    int make_dgram_server_socket(i...
  • AD_LI
  • AD_LI
  • 2007年10月05日 19:57
  • 858

linux socket编程以及简单的tcp,udp的例子

linux socket编程以及简单的tcp,udp的例子通过socket编程大致对网路编程的脉络有个大致的了解,如果有不太懂的地方, 咱们可以到网络上查找手册socket的基本操作创建socket...
  • cabing2005
  • cabing2005
  • 2016年11月07日 18:40
  • 5050

Linux C Socket编程原理及tcp, udp简单实例

http://www.cnblogs.com/xudong-bupt/archive/2013/12/29/3483059.html
  • qq_26437925
  • qq_26437925
  • 2016年07月12日 20:38
  • 1457

Linux下的TCP/IP编程----socket的可选项

在之前我们都是直接通过socket()函数创建一个socket文件描述符直接使用,其实这只是系统为我们提供的一个默认的socket描述符,我们可以根据自己的工程的需求来对socket进行相应的配置,以...
  • wqc_CSDN
  • wqc_CSDN
  • 2016年05月31日 16:25
  • 1400

Linux C TCP Socket实现客户与服务器简单通信

在Linux平台下用C语言udp协议实现客户与服务器的简单通信与封装的实现一、服务器端1、新建CreateServer.c和CreateServer.h文件,服务器的创建代码在此实现,程序中封装了创建...
  • wanna_wsl
  • wanna_wsl
  • 2016年12月17日 20:20
  • 1707

linux C ----- udp, tcp, unix socket通信简单例子

udp socket相关知识UDP的程序设计可以分成客户端和服务器端两个部分。两者的主要差别在于对地址的绑定函数,客户端可以不用进行地质和端口的绑定。(客户端是随机拿一个大于1024的端口去连接的) ...
  • theArcticOcean
  • theArcticOcean
  • 2016年09月11日 09:47
  • 3683
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:辅助函数:Linux TCP socket
举报原因:
原因补充:

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