博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux c socket 源码案例
阅读量:4620 次
发布时间:2019-06-09

本文共 2324 字,大约阅读时间需要 7 分钟。

service端
 
 
#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define MYPORT 8887#define QUEUE 20#define BUFFER_SIZE 1024int main(){ ///定义sockfd int server_sockfd = socket(AF_INET,SOCK_STREAM, 0); ///定义sockaddr_in struct sockaddr_in server_sockaddr; server_sockaddr.sin_family = AF_INET; server_sockaddr.sin_port = htons(MYPORT); server_sockaddr.sin_addr.s_addr = htonl(INADDR_ANY); ///bind,成功返回0,出错返回-1 if(bind(server_sockfd,(struct sockaddr *)&server_sockaddr,sizeof(server_sockaddr))==-1) { perror("bind"); exit(1); } ///listen,成功返回0,出错返回-1 if(listen(server_sockfd,QUEUE) == -1) { perror("listen"); exit(1); } ///客户端套接字 char buffer[BUFFER_SIZE]; struct sockaddr_in client_addr; socklen_t length = sizeof(client_addr); ///成功返回非负描述字,出错返回-1 int conn = accept(server_sockfd, (struct sockaddr*)&client_addr, &length); if(conn<0) { perror("connect"); exit(1); } while(1) { memset(buffer,0,sizeof(buffer)); int len = recv(conn, buffer, sizeof(buffer),0); if(strcmp(buffer,"exit\n")==0) break; fputs(buffer, stdout); send(conn, buffer, len, 0); } close(conn); close(server_sockfd); return 0;}
 
 
 
 
client端
#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define MYPORT  8887#define BUFFER_SIZE 1024int main(){    ///定义sockfd    int sock_cli = socket(AF_INET,SOCK_STREAM, 0);    ///定义sockaddr_in    struct sockaddr_in servaddr;    memset(&servaddr, 0, sizeof(servaddr));    servaddr.sin_family = AF_INET;    servaddr.sin_port = htons(MYPORT);  ///服务器端口    servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");  ///服务器ip    ///连接服务器,成功返回0,错误返回-1    if (connect(sock_cli, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0)    {        perror("connect");        exit(1);    }    char sendbuf[BUFFER_SIZE];    char recvbuf[BUFFER_SIZE];    while (fgets(sendbuf, sizeof(sendbuf), stdin) != NULL)    {        send(sock_cli, sendbuf, strlen(sendbuf),0); ///发送        if(strcmp(sendbuf,"exit\n")==0)            break;        recv(sock_cli, recvbuf, sizeof(recvbuf),0); ///接收        fputs(recvbuf, stdout);        memset(sendbuf, 0, sizeof(sendbuf));        memset(recvbuf, 0, sizeof(recvbuf));    }    close(sock_cli);    return 0;}

测试:

转载于:https://www.cnblogs.com/kool/p/6695959.html

你可能感兴趣的文章
JS生成二维码
查看>>
Android 中的一些Manager
查看>>
halcon读取一张照片,并转化为灰度图像
查看>>
35岁前成功的12条黄金法则 三0七法则
查看>>
手机常用屏幕分辨率及材质名词解释
查看>>
Java 处理 XML 的三种主流技术及介绍
查看>>
nodejs框架express4.2 简单入门
查看>>
java exec python program
查看>>
windows防火墙命令详解
查看>>
【分治】简单说说快排
查看>>
A1117.Eddington Number
查看>>
如何预览将要上传的图片-使用H5的FileAPI
查看>>
ubuntu安装wine+plsql
查看>>
某谷 P5153 简单的函数
查看>>
sizzle源码分析 (4)sizzle 技术总结及值得我们学习的地方
查看>>
ECMAScript6词法
查看>>
ASP.NET Core 中文文档 第四章 MVC(3.1)视图概述
查看>>
软件工程项目之摄影App(第二次冲刺)
查看>>
Struts常见默认值重写
查看>>
iOS9的一些问题
查看>>