c tcp sockt server client -- demo

server.c

//
// Created by gxf on 2020/2/6.
//
#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>

#define BUFFSIZE 1024

void dealClientConnection(int clientSocketFd);
void sendMsg2Client(int clientSocketFd);

int main(int argc, char **argv) {
    int serverSocketFd, clientSocketFd, addrLength, readByteCount, i;
    struct sockaddr_in serverAddress;
    struct sockaddr_in clientAddress;
    char recvBuff[BUFFSIZE];

    serverAddress.sin_family = AF_INET;
    serverAddress.sin_port = htons(8000);
    serverAddress.sin_addr.s_addr = INADDR_ANY;
    bzero(&(serverAddress.sin_zero), 8);

    addrLength = sizeof(struct sockaddr_in);
    serverSocketFd = socket(AF_INET, SOCK_STREAM, 0);
    while((bind(serverSocketFd, (struct sockaddr *)&serverAddress, addrLength)) == -1);
    printf("Bind port 8000 success\n");

    while(listen(serverSocketFd, 10) == -1);
    printf("Listen port 8000 success\n");

    clientSocketFd = accept(serverSocketFd, (struct sockaddr *)&clientAddress, &addrLength);
    printf("Client connecting...\n");

//    readByteCount = send(clientSocketFd, "hello guanxianseng", 21, 0);
    dealClientConnection(clientSocketFd);
    while ((readByteCount = recv(clientSocketFd, recvBuff, BUFFSIZE, 0)) > 0) {
        recvBuff[readByteCount] = ‘\0‘;
        printf("receive from client:%s\n", recvBuff);
        if (send(clientSocketFd, recvBuff, readByteCount, 0) < 0) {
            perror("Write fail");
            return 1;
        }
    }

    close(serverSocketFd);
    close(clientSocketFd);

    return 0;
}

void dealClientConnection(int clientSocketFd) {
    pthread_t  thread;
    pthread_create(&thread, NULL,  sendMsg2Client, clientSocketFd);
}

void sendMsg2Client(int clientSocketFd) {
    send(clientSocketFd, "hello guanxianseng", 21, 0);
    printf("send msg2client\n");
}

  

  

client.c

//
// Created by gxf on 2020/2/6.
//
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <arpa/inet.h>

#include <unistd.h>

#define BUFFSIZE 1024

int main(int argc, char **argv) {
    int clientSocketFd, sendByteCount;
    char receiveBuff[BUFFSIZE];
    struct sockaddr_in serverAddress;

    while ((clientSocketFd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
        perror("Socket fail");
        sleep(1);
    }

    serverAddress.sin_family = AF_INET;
    serverAddress.sin_port = htons(8000);
    serverAddress.sin_addr.s_addr = inet_addr("127.0.0.1");
    bzero(&(serverAddress.sin_zero), 8);

    while (connect(clientSocketFd, (struct sockaddr *)&serverAddress, sizeof(struct sockaddr)) == -1) {
        perror("Connect fail");
        sleep(1);
    }
    printf("Connected server]\n");

    sendByteCount = recv(clientSocketFd, receiveBuff, BUFFSIZE, 0);
    receiveBuff[sendByteCount] = ‘\0‘;
    printf("receive from server:%s\n", receiveBuff);

    while (1) {
        printf("Enter something:\n");
        scanf("%s", receiveBuff);
        send(clientSocketFd, receiveBuff, strlen(receiveBuff), 0);
        sendByteCount = recv(clientSocketFd, receiveBuff, BUFFSIZE, 0);
        receiveBuff[sendByteCount] = ‘\0‘;
        printf("Receive from server:%s\n", receiveBuff);
    }

    close(clientSocketFd);
    return 0;
}

  

原文地址:https://www.cnblogs.com/luckygxf/p/12271559.html

时间: 2024-10-10 01:11:33

c tcp sockt server client -- demo的相关文章

[网络篇]ESP8266-SDK教程(三)之TCP通信Server&lt;-&gt;Client

纳尼?昨天刚刚打印了个"Hello World!",今天你就让我学习TCP通信?有没有搞错~哈哈,相信很多读者会很迷,其实学习这东西嘛,单单学一些比较简单的,相信没两天就没人看了,所以咱就在基础篇和网络篇穿插着去学习一下ESP8266,毕竟兴趣才是最好的老师嘛!大家以后遇到问题了,来翻文章建议大家根据[XX篇]去快速定位该去哪一篇文章中去查找问题,当然具体会在哪一篇文章中有讲,也不一定了,后面也会穿插着写一点[项目篇][进阶篇][闲扯篇],总的来说就是,本系列文章并没有固定的路线,大家

c udp server client demo --待调试

server.c // // Created by gxf on 2020/2/7. // #include <stdio.h> #include <sys/socket.h> #include <arpa/inet.h> #include <stdlib.h> #define BUFFSIZE 1024 int main(){ int serverSocketFd = socket(AF_INET, SOCK_DGRAM, 0); struct socka

[转] 3个学习Socket编程的简单例子:TCP Server/Client, Select

以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序.如果你能完全理解这3个例子,估计socket编程就已经基本入门了. 建议:1) 多多查查所用到的网络接口; 2) 最好有一本书,如UNIX环境高级编程,UNIX网络编程,可查询:3) 可以直接使用书上的例子更好. http://blog.csdn.net/zhenjing/article/details/4770490 TCP C

DotNetty 实现 Modbus TCP 系列 (四) Client &amp; Server

本文已收录至:开源 DotNetty 实现的 Modbus TCP/IP 协议 Client public class ModbusClient { public string Ip { get; } public int Port { get; } public short UnitIdentifier { get; } public IChannel Channel { get; private set; } private MultithreadEventLoopGroup group;

Twisted 库 TCP 服务器 心跳包demo

最近刚刚接触 twisted 库,感觉twisted 库的设计模式和平时接触的socket 通信很大不同, 感觉有点不大适应,为了增加自己对twisted 的适应度, 同时也熟悉一下心跳包的机制. 特地写了一个  基于twisted 库的 TCP  服务器 心跳包 demo. 以供练习之用. 同时也和大家分享 python 编程心得  demo 特性描述: 1   TCP服务器支持多客户端连接, 每次客户端连接之后,直接将客户端信息(IP 地址, 端口号)存储到字典当中. 并且启动Svr_uni

&amp;#39;IOKING&amp;#39; TCP Transmission Server Engine (&amp;#39;云猴&amp;#39;&amp;#169;TCP通讯server引擎)(预告版)

关键词: IOKING IOCP TCP  Transmission Server Engine Lock Free Interlocked 云猴完毕portTCP通讯server引擎 无锁 原子锁(函数) 'IOKING' TCP Transmission Server Engine ('云猴'?TCP通讯server引擎)(预告版) 下载连接: http://download.csdn.net/detail/guestcode/7474171 补充: 无锁消息引擎已经完毕: http://b

python socket之tcp服务器与客户端demo

python socket之tcp服务器与客户端demo 作者:vpoet 日期:夏季 server: # -*- coding: cp936 -*- ''' 建立一个python server,监听指定端口, 如果该端口被远程连接访问,则获取远程连接,然后接收数据, 并且做出相应反馈. ''' import socket if __name__=="__main__": print "Server is starting" sock = socket.socket

TCP并发server,每个客户一个子进程

今天笔者带来的是server型号第一,这是最经常使用的模型的最基本的一个–TCP并发server,每个客户一个子进程. 首先简单介绍:TCP并发server,每个客户一个子进程,并发server调用fork派生一个子进程来处理每一个子进程,使得server能够同一时候为多个客户服务,每一个进程一个客户. 客户数目的唯一限制是操作系统对以其名义执行server的用户ID能够同一时候拥有多少子进程的限制. 详细到我们的需求,我们的client发送某个指令,服务端接收.假设符合服务端的要求.就将当时的

NetMQ(ZeroMQ)Client =&gt; Server =&gt; Client 模式的实现

ØMQ (也拼写作ZeroMQ,0MQ或ZMQ)是一个为可伸缩的分布式或并发应用程序设计的高性能异步消息库.它提供一个消息队列, 但是与面向消息的中间件不同,ZeroMQ的运行不需要专门的消息代理(message broker).该库设计成常见的套接字风格的API. ZeroMQ是由iMatix公司和大量贡献者组成的社群共同开发的.ZeroQ通过许多第三方软件支持大部分流行的编程语言 .类库提供一些套接字(对传统Berkeley套接字和Unix domain socket的泛化),每一个套接字可