linux socket模板

原创 2013年12月05日 14:13:59
服务器端

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>

#define MAXLINE 4096

int main(int argc, char** argv)
{
    int    listenfd, connfd;
    struct sockaddr_in     servaddr;
    char    buff[4096];
    int     n;

    if( (listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1 ){
    printf("create socket error: %s(errno: %d)\n",strerror(errno),errno);
    exit(0);
    }

    memset(&servaddr, 0, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
    servaddr.sin_port = htons(6666);

    if( bind(listenfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) == -1){
    printf("bind socket error: %s(errno: %d)\n",strerror(errno),errno);
    exit(0);
    }

    if( listen(listenfd, 10) == -1){
    printf("listen socket error: %s(errno: %d)\n",strerror(errno),errno);
    exit(0);
    }

    printf("======waiting for client's request======\n");
    while(1){
    if( (connfd = accept(listenfd, (struct sockaddr*)NULL, NULL)) == -1){
        printf("accept socket error: %s(errno: %d)",strerror(errno),errno);
        continue;
    }
    n = recv(connfd, buff, MAXLINE, 0);
    buff[n] = '\0';
    printf("recv msg from client: %s\n", buff);
    close(connfd);
    }

    close(listenfd);
}


 

客户端

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>

#define MAXLINE 4096

int main(int argc, char** argv)
{
    int    sockfd, n;
    char    recvline[4096], sendline[4096];
    struct sockaddr_in    servaddr;

    if( argc != 2){
    printf("usage: ./client <ipaddress>\n");
    exit(0);
    }

    if( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0){
    printf("create socket error: %s(errno: %d)\n", strerror(errno),errno);
    exit(0);
    }

    memset(&servaddr, 0, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(6666);
    if( inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0){
    printf("inet_pton error for %s\n",argv[1]);
    exit(0);
    }

    if( connect(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr)) < 0){
    printf("connect error: %s(errno: %d)\n",strerror(errno),errno);
    exit(0);
    }

    printf("send msg to server: \n");
    fgets(sendline, 4096, stdin);
    if( send(sockfd, sendline, strlen(sendline), 0) < 0)
    {
    printf("send msg error: %s(errno: %d)\n", strerror(errno), errno);
    exit(0);
    }

    close(sockfd);
    exit(0);
}


 

windows api创建socket模板

void ShowError() { TCHAR* lpMsgBuf; FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|//自动分配消息缓冲区 FOR...
  • DNVBYXK
  • DNVBYXK
  • 2017年02月02日 10:24
  • 190

基于Linux的socket编程模板

在网络编程编程中,我们经常会遇到这样一种C/S架构,服务器端(Server)监听客户端(Client)发送过来的命令,然后解析该命令,并做对应的处理,最后返回处理结果(例如成功或者失败及原因)给客户端...
  • sdgaojian
  • sdgaojian
  • 2013年11月11日 22:27
  • 615

基于Linux的socket编程模板

基于Linux的socket编程模板     在网络编程编程中,我们经常会遇到这样一种C/S架构,服务器端(Server)监听客户端(Client)发送过来的命令,然后解析该命令,并做对应的处理, ...
  • indigogao
  • indigogao
  • 2013年06月07日 18:00
  • 370

一个简单的Linux下的socket程序

和C语言教程一样,我们从一个简单的“Hello World!”程序切入 socket 编程。 本节演示了 Linux 下的代码,server.cpp 是服务器端代码,client.cpp 是客户端代...
  • u011467458
  • u011467458
  • 2016年09月19日 14:23
  • 1861

Linux socket 阻塞与非阻塞,同步与异步、I/O模型

1. 概念理解      在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式: 同步:       所谓同步,就是在发...
  • chinaeran
  • chinaeran
  • 2015年03月05日 17:05
  • 2585

Linux下的异步TCP socket及实例

Linux下的异步TCP socket及实例 同步socket通讯时,程序会阻塞在诸如(connect、accept、recv、recvfrom)等操作上,直到有事件发生时才会继续。而在异步通讯...
  • linuxheik
  • linuxheik
  • 2013年03月05日 09:33
  • 3168

linux下socket通信,server和client简单例子

server.c ==================================================================== #include // for...
  • xiaojun111111
  • xiaojun111111
  • 2016年09月26日 09:58
  • 948

linux 系统下使用socket进行本地进程间通信

使用套接字除了可以实现网络间不同主机间的通信外,还可以实现同一主机的不同进程间的通信,且建立的通信是双向的通信。socket进程通信与网络通信使用的是统一套接口,只是地址结构与某些参数不同。 其主要...
  • baidu_24553027
  • baidu_24553027
  • 2017年02月07日 17:16
  • 1152

Linux下的socket编程

Linux下的网络编程的含义 linux 网络编程是通过socket(套接字)接口实现,socket是一种文件描述符(可类比文件操作),socket起源于UNIX,在Unix一切皆文件哲学的思想下,...
  • phiall
  • phiall
  • 2016年06月28日 15:03
  • 1060

Linux socket 本地进程间通信

socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。Socket就是该模式的一...
  • u010073981
  • u010073981
  • 2016年02月26日 01:00
  • 1333
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux socket模板
举报原因:
原因补充:

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