首先,可以将代码复制下来放到U盘里,然后挂载到Linux上

挂载步骤

找到设备->USB->你U盘的名字

挂载成功

访问U盘把代码拷贝到home文件夹下,就可以直接进行编译。

client.c

    #include <stdio.h>
#include <unistd.h>
#include <strings.h>
#include<string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <netdb.h> #define PORT 1234
#define MAXDATASIZE 100 char receiveM[];
char sendM[]; int main(int argc, char *argv[])
{
int fd, numbytes;
struct hostent *he;
struct sockaddr_in server; //检查用户输入,如果用户输入不正确,提示用户正确的输入方法
if (argc !=) { printf("Usage: %s <IP Address>\n",argv[]);
exit();
} // 通过函数 gethostbyname()获得字符串形式的ip地址,并赋给he
if ((he=gethostbyname(argv[]))==NULL){
printf("gethostbyname() error\n");
exit();
} // 产生套接字fd
if ((fd=socket(AF_INET, SOCK_STREAM, ))==-){
printf("socket() error\n");
exit();
} bzero(&server,sizeof(server)); server.sin_family = AF_INET;
server.sin_port = htons(PORT);
server.sin_addr = *((struct in_addr *)he->h_addr);
if(connect(fd, (struct sockaddr *)&server,sizeof(struct sockaddr))==-){
printf("connect() error\n");
exit();
} // 向服务器发送数据 printf("send message to server:"); fgets(sendM,,stdin);
int send_le;
send_le=strlen(sendM);
sendM[send_le-]='\0'; send(fd,sendM,strlen(sendM),); // 从服务器接收数据
if ((numbytes=recv(fd,receiveM,MAXDATASIZE,)) == -){
printf("recv() error\n");
exit();
} printf("receive message from server:%s\n",receiveM); close(fd); }

server.c

    #include <stdio.h>
#include <string.h>
#include <strings.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include<pthread.h>
#define PORT 1234
#define BACKLOG 1 void *start_routine( void *ptr)
{
int fd = *(int *)ptr;
char buf[];
int numbytes;
int i,c=;
printf("this is a new thread,you got connected\n");
printf("fd=%d\n",fd); if ((numbytes=recv(fd,buf,,)) == -){
printf("recv() error\n");
exit();
} char str[numbytes];
char buffer[numbytes]; //将收到的字符串反转
for(c=;c<(numbytes-);c++)
{
buffer[c]=buf[c];
} printf("receive message:%s\n",buf); printf("numbytes=%d\n",numbytes); for(i=;i<numbytes;i++)
{
str[i]=buf[numbytes--i]; } printf("server will send:%s\n",str);
numbytes=send(fd,str,sizeof(str),);
printf("send numbytes=%d\n",numbytes);
close(fd);
} int main()
{ int listenfd, connectfd;
struct sockaddr_in server;
struct sockaddr_in client;
int sin_size;
sin_size=sizeof(struct sockaddr_in); pthread_t thread; //定义一个线程号 if ((listenfd = socket(AF_INET, SOCK_STREAM, )) == -)
{
perror("Creating socket failed.");
exit();
} int opt = SO_REUSEADDR;
setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)); bzero(&server,sizeof(server)); server.sin_family=AF_INET;
server.sin_port=htons(PORT);
server.sin_addr.s_addr = htonl (INADDR_ANY); // 绑定
if (bind(listenfd, (struct sockaddr *)&server, sizeof(struct sockaddr)) == -) {
perror("Bind error.");
exit();
} // 监听
if(listen(listenfd,BACKLOG) == -){ /* calls listen() */
perror("listen() error\n");
exit();
} while()
{
// accept
if ((connectfd = accept(listenfd,(struct sockaddr *)&client,&sin_size))==-) {
perror("accept() error\n");
exit();
} printf("You got a connection from %s\n",inet_ntoa(client.sin_addr) ); pthread_create(&thread,NULL,start_routine,(void *)&connectfd); }
close(listenfd); }

代码从U盘复制到home后,编译执行

打开三个中端

可以发现用户端和服务器端连接成功,即用户端发送的信息,服务器端可以接收的到。

Linux下实现客户端和服务器端的通信的更多相关文章

  1. Linux 下 简单客户端服务器通讯模型(TCP)

    原文:Linux 下 简单客户端服务器通讯模型(TCP) 服务器端:server.c #include<stdio.h> #include<stdlib.h> #include ...

  2. Linux下librdkafka客户端的编译运行

    Linux下librdkafka客户端的编译运行 librdkafka是一个开源的Kafka客户端C/C++实现,提供了Kafka生产者.消费者接口. 由于项目需要,我要将Kafka生产者接口封装起来 ...

  3. linux下MongoDB客户端shell基本操作

    MongoDB 是一款NoSql数据库,没有固定的模式,即同一个集合中的不同文档结构可以不同,如:第一条记录{name:”xiaoming”},第二条记录:{name:”xiaoli”,age:15} ...

  4. (转)Linux下 SVN客户端安装

    原地址:http://rtxbc.iteye.com/blog/860092 今天有现场程序连svn服务器一直有异常,于是在现场linux下安装svn client来直接测试,看问题原因: 一:安装s ...

  5. Linux下PHP与普通C程序通信

    Linux下的普通C程序之前可以使用FIFO(有名管道来进行进程间通信,因为这个管道以一个文件的形式存在于文件系统上,因此只要能读写这个文件就可以实现进程间通信. 首先使用mkfifo命令有文件系统上 ...

  6. Linux下onvif客户端获取ipc摄像头 GetServices:获取媒体地址(有的h265摄像头必须要这个接口)

    GetServices:获取媒体地址(有些h265的摄像头必须用到这个接口,得到获取能力时没获取到的另一个媒体地址) 鉴权:但是在使用这个接口之前是需要鉴权的.ONVIF协议规定,部分接口需要鉴权,部 ...

  7. Linux下onvif客户端关于ipc摄像头的搜索

    设备搜索:要访问一个IPC摄像头,或者说要调用IPC摄像头提供的WEB服务接口,就要先知道其IP地址,这就是设备发现的过程,或者叫设备搜索的过程.IPC摄像头用的是239.255.255.250(端口 ...

  8. Linux下onvif客户端获取h265 IPC摄像头的RTSP地址

    1. 设备搜索,去获取webserver 的地址 ,目的是在获取能力提供服务地址,demo:https://www.cnblogs.com/croxd/p/10683429.html 2. GetCa ...

  9. Linux下onvif客户端获取ipc摄像头 GetStreamUri:rtsp地址(h264、h265)

    GetStreamUri:rtsp地址 鉴权:但是在使用这个接口之前是需要鉴权的.ONVIF协议规定,部分接口需要鉴权,部分接口不需要鉴权,在调用需要鉴权的接口时不使用鉴权,会导致接口调用失败.实现鉴 ...

随机推荐

  1. C#设计模式:适配器模式(Adapter Pattern)

    一,Adapter适配器模式是将两个不兼容的类组合在一起使用,如下例子 using System; using System.Collections.Generic; using System.Lin ...

  2. JVM(9)之 年轻代收集器

    开发十年,就只剩下这套架构体系了! >>>   继续上一篇博文所讲的,STW即GC时候的停顿时间,他会暂停我们程序中的所有线程.如果STW所用的时间长而且次数多的话,那么我们整个系统 ...

  3. maven私服nexus3.9安装配置

    maven私服nexus3.9安装配置 私服介绍 私服是指私有服务器,是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构建.有了私服之后,当 Maven 需要下载构件时,直接请求私服 ...

  4. R语言子集

    取子集方法 x[]:适用于所有r语言 x[[ ]]:适用于list或者data.frame中提取元素 x$:使用元素名做索引,提取list或者data.frame中的某个元素 注意,取出的子集数据类型 ...

  5. 阿里云搭建香港代理服务器 shadownsocks

    阿里云香港代理服务器搭建方式: 1.阿里云官网购买轻量级服务器即可,流量,配置套餐自己选择,CENTOS7,进入控制台后打开端口管理列表,打开9000即可. 2.安装shadownsocks服务端: ...

  6. 自定义 异步 IO 非阻塞框架

    框架一 自定义Web异步非阻塞框架 suosuo.py #!/usr/bin/env python # -*- coding: utf-8 -*-# # __name__ = Web_Framewor ...

  7. $NOIP2018$ 爆踩全场记

    NOIP2018 Day-1 路还很长. 这里就是起点. 这是最简单的一步,但这是最关键的一步. 联赛就在眼前了,一切好像都已经准备好了,一切好像又都没准备好. 相信自己吧,\(mona\),这绝对不 ...

  8. BZOJ3207 花神的嘲讽计划I

    Time Limit: 10 Sec Memory Limit: 128 MB Summary 给你一个模式串P,q个询问,对每个询问回答从Pl到Pr是否存在与给定串相同的子串,同时有所有的给定串长度 ...

  9. python request post请求body中有json数组

    今天被这个卡了好久,最后解决发现是个小问题,哈哈 记录: 用request发送post请求,原来当body都是普通的字符串和数字时一切顺利,今天遇到了body里面有json数组,结果就是报参数错误 解 ...

  10. SpringBoot---缓存支持Cache

    1.概述 1.1.在  Spring中使用缓存技术   的  关键   是配置CacheManager: SpringBoot为我们   自动配置了多个  CacheManager实现: Spring ...