直接贴代码吧
client.c
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
int sockfd;
int len;
struct sockaddr_in address;
int result;
int i,byte;
char char_recv,char_send;
if((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1)
{
perror("socket");
exit(EXIT_FAILURE);
}
address.sin_family = AF_INET;
address.sin_addr.s_addr = inet_addr("127.0.0.1");
address.sin_port = 8080;
len = sizeof(address);
if((result = connect(sockfd,(struct sockaddr *)&address,len)) == -1)
{
perror("connect");
exit(EXIT_FAILURE);
}
printf("please enter the context you want to send to server :");
scanf("%c",&char_send);
if(byte = send(sockfd,&char_send,1,0) == -1)
{
perror("send");
exit(EXIT_FAILURE);
}
if(byte = recv(sockfd,&char_recv,1,0) == -1)
{
perror("recv");
exit(EXIT_FAILURE);
}
printf("receive from server %c\n",char_recv);
close(sockfd);
exit(0);
}
server.c
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
char dict(char temp)
{
if(temp == 'Z')
{
return 'A';
}
return temp+1;
}
int main()
{
int server_sockfd,client_sockfd;
int server_len,client_len;
struct sockaddr_in server_address;
struct sockaddr_in client_address;
int i,btye;
char char_recv,char_send;
server_address.sin_family = AF_INET;
server_address.sin_addr.s_addr = inet_addr("127.0.0.1");
server_address.sin_port = 8080;
server_len = sizeof(server_address);
server_sockfd = socket(AF_INET,SOCK_STREAM,0);
bind(server_sockfd,(struct sockaddr *)&server_address,server_len);
listen(server_sockfd,5);
printf("server waiting for connect\n");
client_len = sizeof(client_address);
client_sockfd = accept(server_sockfd,(struct sockaddr *)&client_address,(socklen_t *)&client_len);
if(btye = recv(client_sockfd,&char_recv,1,0) == -1)
{
perror("recv");
exit(EXIT_FAILURE);
}
printf("receive from client is %c\n",char_recv);
char_send = dict(char_recv);
if(btye = send(client_sockfd,&char_send,1,0) == -1)
{
perror("send");
exit(EXIT_FAILURE);
}
shutdown(client_sockfd,2);
shutdown(server_sockfd,2);
return 0;
}
分享到:
相关推荐
客户端需要两个进程分别支持以下功能: 子进程: 1.等待用户输入信息 2.将聊天信息写入管道(pipe),并发送给父进程 父进程: 1.使用epoll机制接收服务端发来的消息,并显示给用户,使用户看到其他用户的信息 2....
利用命名管道实现本机两个进程之间通信。一个服务器,一个客户端。可以通过修改管道的名字实现网络通信(参照管道的命名方法),并且可以通过修改服务器创建管道时的参数,实现服务器与多个客户之间的的通信。 相...
其中Socket和Streams支持不同主机上的两个进程IPC。以Linux中的C语言编程为例。 管道,通常指无名管道,是UNIX系统IPC最古老的形式。1、特点: 它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。...
进程通信是指两个或多个进程之间的信息交换。为了实现进程通信,需要使用套接字编程。套接字是一种特殊的文件描述符,用于表示网络连接。每个套接字都有一个唯一的三元组标识符,包括协议、本地地址、本地端口号。 ...
网络聊天程序是目前应用极为广泛的一种网络软件,对于方便人们的交流沟通非常有效,同时,... 程序基于Linux系统开发,纯C语言Socket实现多个客户端之间通信,由服务器端进行数据处理,基本实现聊天功能的基础运用。
4. 进程间通信 4.1. 管道 4.2. 其它IPC机制 5. 练习:实现简单的Shell 31. Shell脚本 1. Shell的历史 2. Shell如何执行命令 2.1. 执行交互式命令 2.2. 执行脚本 3. Shell的基本语法 3.1. 变量 3.2. 文件名代换...
本文设计的聊天系统是一种基于QT的局域网聊天系统,采用TCP协议进行数据传输,使用Socket机制实现进程之间的数据通信,具有良好的可移植性和实时性,适用于不同架构的CPU和不同的操作系统平台,具有很高的工业价值和...
第7章基于socket的进程间通信 7.1系统调用socket() 7.2函数sys—socket()——创建插口 7.3函数sys—bind()——指定插口地址 7.4函数sys—listen()——设定server插口 7.5函数sys—accept()——接受连接请求 ...
基于TCP/IP的通信基本上都是利用SOCKET套接字进行数据通讯,程序一般分为服务器端和用户端两部分。设计思路(VC6.0下): 第一部分 服务器端 一、创建服务器套接字(create)。 二、服务器套接字进行信息绑定...
11.11 进程间传递Socket文件描述符 11.12 理解事件驱动的IO 11.13 发送与接收大型数组 第十二章:并发编程 12.1 启动与停止线程 12.2 判断线程是否已经启动 12.3 线程间通信 12.4 给关键部分加锁 12.5 ...
进程间通信的方式有 共享内存, 管道 ,Socket ,消息队列 , DDE等 18.C++中什么数据分配在栈或堆中,New分配数据是在近堆还是远堆中? 答:栈: 存放局部变量,函数调用参数,函数返回值,函数返回地址。由系统管理...
在前两种格式中,会将<来源>复制至<目的地>或将多个<来源>文件复制至已存在的<目录>,同时设定权限模式及所有者/所属组。在第三种格式中,会创建所有指定的目录及它们的主目录。长选项必须用的参数在使用短选项时也...
给定一个C语言函数,要求实现在java类中进行调用。 45.如何获得数组的长度? 46.访问修饰符“public/private/protected/缺省的修饰符”的使用 47.用关键字final修饰一个类或者方法时,有何意义? 48.掌握类和...
这两个好象是一样的,此时*p可以修改,而p不能修改。 (4)const char * const p 这种是地址及指向对象都不能修改。 -------------------------------------------------------------------------- 6.下面是C语言中...
阅读本书,需要读者有C语言、数据结构、操作系统和计算机网络的基础知识。 目录: 封面 -25 扉页 -24 内容简介 -23 序 -22 关于本书作者和贡献者 -20 前言 -18 阅读注意 -16 目录 -12 正文 1 第1章 内核上机指导 1...
阅读本书,需要读者有C语言、数据结构、操作系统和计算机网络的基础知识。 目录: 封面 -25 扉页 -24 内容简介 -23 序 -22 关于本书作者和贡献者 -20 前言 -18 阅读注意 -16 目录 -12 正文 1 第1章 内核上机指导 1...
阅读本书,需要读者有C语言、数据结构、操作系统和计算机网络的基础知识。 目录: 封面 -25 扉页 -24 内容简介 -23 序 -22 关于本书作者和贡献者 -20 前言 -18 阅读注意 -16 目录 -12 正文 1 第1章 内核上机指导 1...
阅读本书,需要读者有C语言、数据结构、操作系统和计算机网络的基础知识。 目录: 封面 -25 扉页 -24 内容简介 -23 序 -22 关于本书作者和贡献者 -20 前言 -18 阅读注意 -16 目录 -12 正文 1 第1章 内核上机指导 1...