`
acme_ltt
  • 浏览: 52232 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

C语言两个进程相互通信—socket

阅读更多

直接贴代码吧

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;
}
分享到:
评论

相关推荐

    命名管道实现点对点聊天程序

    利用命名管道实现本机两个进程之间通信。一个服务器,一个客户端。可以通过修改管道的名字实现网络通信(参照管道的命名方法),并且可以通过修改服务器创建管道时的参数,实现服务器与多个客户之间的的通信。 相...

    进程间通信(IPC)介绍

    其中Socket和Streams支持不同主机上的两个进程IPC。以Linux中的C语言编程为例。 管道,通常指无名管道,是UNIX系统IPC最古老的形式。1、特点: 它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。...

    基于Linux的网络编程——网络聊天程序

    网络聊天程序是目前应用极为广泛的一种网络软件,对于方便人们的交流沟通非常有效,同时,... 程序基于Linux系统开发,纯C语言Socket实现多个客户端之间通信,由服务器端进行数据处理,基本实现聊天功能的基础运用。

    宋劲彬的嵌入式C语言一站式编程

    4. 进程间通信 4.1. 管道 4.2. 其它IPC机制 5. 练习:实现简单的Shell 31. Shell脚本 1. Shell的历史 2. Shell如何执行命令 2.1. 执行交互式命令 2.2. 执行脚本 3. Shell的基本语法 3.1. 变量 3.2. 文件名代换...

    Linux内核源代码情景分析 (上下册 高清非扫描 )

    第7章基于socket的进程间通信 7.1系统调用socket() 7.2函数sys—socket()——创建插口 7.3函数sys—bind()——指定插口地址 7.4函数sys—listen()——设定server插口 7.5函数sys—accept()——接受连接请求 ...

    TCP聊天室 VC版 含实验报告

    基于TCP/IP的通信基本上都是利用SOCKET套接字进行数据通讯,程序一般分为服务器端和用户端两部分。设计思路(VC6.0下): 第一部分 服务器端 一、创建服务器套接字(create)。 二、服务器套接字进行信息绑定...

    python cookbook(第3版)

    11.11 进程间传递Socket文件描述符 11.12 理解事件驱动的IO 11.13 发送与接收大型数组 第十二章:并发编程 12.1 启动与停止线程 12.2 判断线程是否已经启动 12.3 线程间通信 12.4 给关键部分加锁 12.5 ...

    最新名企标准通用C++面试题,

    进程间通信的方式有 共享内存, 管道 ,Socket ,消息队列 , DDE等 18.C++中什么数据分配在栈或堆中,New分配数据是在近堆还是远堆中? 答:栈: 存放局部变量,函数调用参数,函数返回值,函数返回地址。由系统管理...

    入门学习Linux常用必会60个命令实例详解doc/txt

    在前两种格式中,会将&lt;来源&gt;复制至&lt;目的地&gt;或将多个&lt;来源&gt;文件复制至已存在的&lt;目录&gt;,同时设定权限模式及所有者/所属组。在第三种格式中,会创建所有指定的目录及它们的主目录。长选项必须用的参数在使用短选项时也...

    JAVA面试题最全集

    给定一个C语言函数,要求实现在java类中进行调用。 45.如何获得数组的长度? 46.访问修饰符“public/private/protected/缺省的修饰符”的使用 47.用关键字final修饰一个类或者方法时,有何意义? 48.掌握类和...

    c++ 面试题 总结

    这两个好象是一样的,此时*p可以修改,而p不能修改。 (4)const char * const p 这种是地址及指向对象都不能修改。 -------------------------------------------------------------------------- 6.下面是C语言中...

    寒江独钓-Windows内核安全编程(高清完整版).part7

    阅读本书,需要读者有C语言、数据结构、操作系统和计算机网络的基础知识。 目录: 封面 -25 扉页 -24 内容简介 -23 序 -22 关于本书作者和贡献者 -20 前言 -18 阅读注意 -16 目录 -12 正文 1 第1章 内核上机指导 1...

    寒江独钓-Windows内核安全编程(高清完整版).part4

    阅读本书,需要读者有C语言、数据结构、操作系统和计算机网络的基础知识。 目录: 封面 -25 扉页 -24 内容简介 -23 序 -22 关于本书作者和贡献者 -20 前言 -18 阅读注意 -16 目录 -12 正文 1 第1章 内核上机指导 1...

    寒江独钓-Windows内核安全编程(高清完整版).part6

    阅读本书,需要读者有C语言、数据结构、操作系统和计算机网络的基础知识。 目录: 封面 -25 扉页 -24 内容简介 -23 序 -22 关于本书作者和贡献者 -20 前言 -18 阅读注意 -16 目录 -12 正文 1 第1章 内核上机指导 1...

    寒江独钓-Windows内核安全编程(高清完整版).part5

    阅读本书,需要读者有C语言、数据结构、操作系统和计算机网络的基础知识。 目录: 封面 -25 扉页 -24 内容简介 -23 序 -22 关于本书作者和贡献者 -20 前言 -18 阅读注意 -16 目录 -12 正文 1 第1章 内核上机指导 1...

    寒江独钓-Windows内核安全编程(高清完整版).part3

    阅读本书,需要读者有C语言、数据结构、操作系统和计算机网络的基础知识。 目录: 封面 -25 扉页 -24 内容简介 -23 序 -22 关于本书作者和贡献者 -20 前言 -18 阅读注意 -16 目录 -12 正文 1 第1章 内核上机指导 1...

    寒江独钓-Windows内核安全编程(高清完整版).part1

    阅读本书,需要读者有C语言、数据结构、操作系统和计算机网络的基础知识。 目录: 封面 -25 扉页 -24 内容简介 -23 序 -22 关于本书作者和贡献者 -20 前言 -18 阅读注意 -16 目录 -12 正文 1 第1章 内核上机指导 1...

    寒江独钓-Windows内核安全编程(高清完整版).part2

    阅读本书,需要读者有C语言、数据结构、操作系统和计算机网络的基础知识。 目录: 封面 -25 扉页 -24 内容简介 -23 序 -22 关于本书作者和贡献者 -20 前言 -18 阅读注意 -16 目录 -12 正文 1 第1章 内核上机指导 1...

Global site tag (gtag.js) - Google Analytics