TCP连接方式

sever.c

#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include <errno.h> #define PORT 8000
#define QUEN 20
#define MAXLINE 2048
int main()
{
    int sock_fd,connect_fd;
    char BUFFER[2048];
    int n;
    struct sockaddr_in severaddr;
    if((sock_fd = socket(AF_INET, SOCK_STREAM, 0))==-1)
    {
        printf("create socket error: %s(errno: %d)\n",strerror(errno),errno);
        exit(0);
    }
    memset(&severaddr,0,sizeof(severaddr));
    severaddr.sin_family = AF_INET;
    severaddr.sin_port = htons(PORT);
    severaddr.sin_addr.s_addr = htonl(INADDR_ANY);     if((bind(sock_fd,(struct sockaddr*)&severaddr, sizeof(severaddr)))==-1)
    {
        printf("bind socket error: %s(errno: %d)\n",strerror(errno),errno);
        exit(0);
    }
    if(listen(sock_fd,QUEN)==-1)
    {
        printf("listen error");
    }
    printf("=============wating for client=========================\n");     connect_fd = accept(sock_fd,(struct sockaddr*)NULL, NULL);
    while((n = recv(connect_fd,BUFFER,MAXLINE,0))>0)
    {
        if(!fork())  //son
        {
            if((send(connect_fd,BUFFER,sizeof(BUFFER),0)) == -1)
                perror("send error");
            BUFFER[n]='\0';
            printf("receive message from client:  %s\n",BUFFER);
            close(connect_fd);
            exit(0);
        }
        if((strcmp(BUFFER,"exit"))==0)
        {
            printf("exit link");
            break;
        }
    }     close(connect_fd);
    close(sock_fd); }
                 

client.c

#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h> #define MAXLINE 2048
#define PORT 8000
int main()
{
    int sock_fd,rec_len;
    char recvline[2048],sendline[2048];
    char buf[MAXLINE];
    struct sockaddr_in clientaddr;     if((sock_fd = socket(AF_INET, SOCK_STREAM,0))==-1)
    {
        printf("socket link error\n");
    }
    memset(&clientaddr,0,sizeof(clientaddr));
    clientaddr.sin_family = AF_INET;
    clientaddr.sin_port =htons( PORT);
    clientaddr.sin_addr.s_addr = inet_addr("127.0.0.1");     if((connect(sock_fd,(struct sockaddr*)&clientaddr,sizeof(clientaddr)))==-1)
    {
        printf("connect errot\n");
        exit(0);
    }
    while(fgets(sendline,2048,stdin) != NULL)
    {         printf("send message to sever:%s\n",sendline);         send(sock_fd,sendline, sizeof(sendline),0);         rec_len = recv(sock_fd,buf,MAXLINE,0);
        if(sendline=="exit")
        {
            printf("exit link\n");
            break;
        }
        buf[rec_len] = '\0';
        printf("receive:%s\n",buf);     }     close(sock_fd);     exit(0);
}

UDP方式连接

sever.c

#include <stdio.h>

#include <sys/socket.h>

#include <string.h>

#include <sys/types.h>

#include <netinet/in.h>

#include <stdlib.h>

#define FILE_NAME_SIZE 512

#define PORT 8000

#define BUFFERSIZE 1024

int main()

{

        int sock_id, bind_id;

        struct sockaddr_in severaddr;

        if((sock_id = socket(AF_INET,SOCK_DGRAM,)) == -)

        {

                printf("socket error");

                exit();

        }

        memset(&severaddr,, sizeof(severaddr));

        severaddr.sin_family = AF_INET;

        severaddr.sin_port = htons(PORT);

        severaddr.sin_addr.s_addr = htonl(INADDR_ANY);

        if((bind_id = bind(sock_id, (struct sockaddr*)&severaddr, sizeof(severaddr))) == -)

        {                 printf("bind error");                 exit();         }

        while()

        {

                struct sockaddr_in clientaddr;

                socklen_t clientaddr_length = sizeof(clientaddr);

                char recvbuf[BUFFERSIZE];

                bzero(recvbuf, BUFFERSIZE);

                if((recvfrom(sock_id,recvbuf,BUFFERSIZE,,(struct sockaddr*)&clientaddr,&clientaddr_length))==-)

                {                         printf("recv error");                         exit();                 }

                char file_name[FILE_NAME_SIZE];

                bzero(file_name, FILE_NAME_SIZE);

                strncpy(file_name,recvbuf,strlen(recvbuf)>FILE_NAME_SIZE?FILE_NAME_SIZE:strlen(recvbuf));
printf("%s\n",file_name);
}
close(sock_id);
return ;
}

client.c

#include <stdio.h>

#include <stdlib.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <string.h>

#include <errno.h>

#define PORT 8000

#define BUFFER_SIZE 1024

int main()

{

        int sock_id;

        struct sockaddr_in clientaddr;

        if((sock_id = socket(AF_INET, SOCK_DGRAM, )) == -)

        {                 perror("sock error");                 exit();         }

        memset(&clientaddr, , sizeof(clientaddr));

        clientaddr.sin_family = AF_INET;

        clientaddr.sin_port   = htons(PORT);

        clientaddr.sin_addr.s_addr = inet_addr("127.0.0.1");

        char file_name[BUFFER_SIZE];

        bzero(file_name, BUFFER_SIZE);

        scanf("%s\n",file_name);

        if(sendto(sock_id, file_name, BUFFER_SIZE, , (struct sockaddr *)&clientaddr, sizeof(clientaddr)) <)

        {                 perror("send error");                 exit();         }

        close(sock_id);

        return ;

}

C/S模式简单socket通信的更多相关文章

  1. 基于Tcp协议的简单Socket通信实例(JAVA)

    好久没写博客了,前段时间忙于做项目,耽误了些时间,今天开始继续写起~ 今天来讲下关于Socket通信的简单应用,关于什么是Socket以及一些网络编程的基础,这里就不提了,只记录最简单易懂实用的东西. ...

  2. 基于NIO的Socket通信

    一.NIO模式的基本原理: 服务端: 首先,服务端打开一个通道(ServerSocketChannel),并向通道中注册一个通道调度器(Selector):然后向通道调度器注册感兴趣的事件Select ...

  3. Java Socket 通信实例 - 转载

    基于Tcp协议的简单Socket通信实例(JAVA)   好久没写博客了,前段时间忙于做项目,耽误了些时间,今天开始继续写起~ 今天来讲下关于Socket通信的简单应用,关于什么是Socket以及一些 ...

  4. php简单实现socket通信

    socket通信的原理在这里就不说了,它的用途还是比较广泛的,我们可以使用socket来做一个API接口出来,也可以使用socket来实现两个程序之间的通信,我们来研究一下在php里面如何实现sock ...

  5. UEditor编辑器和php简单的实现socket通信

    一.UEditor编辑器 使用这个编辑器是需要先下载编辑器文件,记得下载的时候放入自己的网站中,既然是php中使用,自然我下载的就是php的UEditor编辑器了,然后是utf-8的 其实使用很简单, ...

  6. Day 6-2简单的socket通信

    什么是socket? Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面 ...

  7. php socket通信的简单实现

    socket通信的原理在这里就不说了,它的用途还是比较广泛的,我们可以使用socket来做一个API接口出来,也可以使用socket来实现两个程序之间的通信,我们来研究一下在php里面如何实现sock ...

  8. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答

    一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...

  9. Linux下简单的socket通信实例

    Linux下简单的socket通信实例 If you spend too much time thinking about a thing, you’ll never get it done. —Br ...

随机推荐

  1. 在Delphi中使用系统对应文件类型的图标

    在应用程序的编写中,组合框(ComboBox).列表框(ListBox).等常见的部件,通常不仅要用于显示文字,而且还要显示其与文字相关的图标.在一般的Windows应用程序中,这些图标的显示都要随列 ...

  2. delphi xe 正则表达式

    Delphi XE 中自带了正则表达式的处理类TRegEx,包含在单元 RegularExpressions,使用时要uses 一下.      TRegEx 是一个结构 ,使用时不用释放.他内部还是 ...

  3. mapreduce求共同好友

    逻辑分析 以下是qq的好友列表数据,冒号前是一个用户,冒号后是该用户的所有好友(数据中的好友关系是单向的) A:B,C,D,F,E,O B:A,C,E,K C:F,A,D,I D:A,E,F,L E: ...

  4. iframe中涉及父子页面跨域问题

    什么是跨域? 跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器施加的安全限制.所谓同源是指相同的域名.协议和端口,只要其中一项不同就为跨域. 举几个例子: http:/ ...

  5. jekins—持续集成

    json转换为Python的字典形式 Martin fowler:通过自动化的构建,编译-发布-自动化测试,尽早的发现集成的错误 持续集成的要素: 统一的代码库 自动构建编译 自动测试(单元测试) 每 ...

  6. 2019 ACM-ICPC 南京 现场赛 H. Prince and Princess

    题意 王子想要娶公主,但是需要完成一个挑战:在一些房间中找出公主在哪. 每个房间有一个人,他们彼此知道谁在哪个房间.可以问他们三种问题: 你是谁? 在某个房间是谁? 公主在哪个房间? 有三类人,一类一 ...

  7. volatile在嵌入式系统中的用法

    今天参加一家公司的嵌入式C语言笔试,其中有道主观题谈到在嵌入式系统中volatile变量的用法.平时学习C语言没怎么用到,只用到过static和extern的变量,很惭愧没答上来.嵌入式C语言笔试经常 ...

  8. Python django tests

    单元测试函数必须以test_开头,否则无法被识别

  9. [轉]Exploit Linux Kernel Slub Overflow

    Exploit Linux Kernel Slub Overflow By wzt 一.前言 最近几年关于kernel exploit的研究比较热门,常见的内核提权漏洞大致可以分为几类: 空指针引用, ...

  10. oracle中hint 详解

    Hint概述 基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担.但有时它也聪明反被聪明误,选择了很差的执行计划,使某个语句的执行变得奇慢无比. 此时就需要DBA进行 ...