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 ;

}

最新文章

  1. Mac系统下配置JDK环境变量
  2. 关于公司VPN专线接入的一个案例
  3. Java-类和对象基础练习
  4. 如何设计点击点击一个div,其他div做出对应反应,以及获取一个节点下的子节点
  5. 【原创】如何在Android中为TextView动态设置drawableLeft等
  6. CString 转 char*; wstring 转 string
  7. 初学者学习javascript语言应注意的那几点
  8. js分割文件快速上传
  9. 导入sql时报日期类型错误
  10. oracle暂时表空间 ORA-01652:无法通过16(在表空间XXX中)扩展 temp 字段
  11. Tair LDB基于Prefixkey中期范围内查找性能优化项目总结
  12. html表单 2017-03-10PM
  13. markdown基础
  14. java 信号量Semaphore
  15. 关于getch()函数
  16. [随笔][Java][修改pom仓库库为阿里云]
  17. c++常用小算法
  18. 人工智能第三课:数据科学中的Python
  19. saltstack returners
  20. 用js控制 给一个input赋值之后,change事件不能捕获到,解决办法

热门文章

  1. PHP浮点计算结果返回异常问题
  2. springboot-redis相关配置整理
  3. mysql常用内置函数-查询语句中不能使用strtotime()函数!
  4. client-go获取k8s集群内部连接,实现deployment的增删改查
  5. MyEclipse增强代码补全
  6. 04、python的基础--&gt;列表跟元组
  7. android中读取SD卡上的数据
  8. python获取网页源代码
  9. freemarker在web应用项目的使用
  10. 【模板篇】NTT和三模数NTT