直接贴代码吧
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;
}
分享到:
相关推荐
Socket是网络通信中的一个端点,它允许两个进程通过网络进行数据交换。在C语言中,我们通常使用Berkeley套接字(也称为BSD Socket)API来创建和操作Socket。 1. **创建Socket**: 在C语言中,创建Socket首先要包含...
一旦连接建立,两个进程就可以通过Socket交换数据。在这个场景中,我们的目标是让服务器端接收客户端发送的文件内容,并将其保存到本地,或者反过来,由服务器发送文件给客户端。 在C语言中,我们主要使用以下函数...
Socket是操作系统提供的一种进程间通信(IPC)机制,特别是在网络环境中,它允许不同计算机上的进程相互通信。在TCP/IP协议栈中,Socket是基于传输层(TCP或UDP)的接口,使得应用程序能够发送和接收数据。 在C语言...
本主题将深入探讨如何在C语言环境下实现两个进程之间的通信,以及相关的知识点。 首先,我们需要了解进程通信的几种基本方式。在C语言中,常见的进程通信机制包括管道(Pipe)、共享内存、消息队列、信号量、套接字...
SOCKET是操作系统提供的一种进程间通信机制,特别是在网络通信中,它被用于创建和维护连接,以便数据能在不同计算机之间传输。在C语言中,SOCKET API提供了一系列函数,如socket()用于创建套接字,connect()用于连接...
Socket是网络编程中的基本概念,它是指两个进程之间的通信endpoint。Socket可以分为两种类型:TCP Socket和UDP Socket。TCP Socket是一种面向连接的协议,数据传输时需要先建立连接,然后才能进行数据传输。UDP ...
Socket是网络上的两个进程之间通信的端点,可以理解为通信的插座。在C语言中,我们通常使用套接字库(socket library)来创建和操作Socket。 1. **创建Socket**: 在C语言中,创建Socket的第一步是调用`socket()`...
本项目——“基于C语言多进程通信的银行ATM系统”——正是对这一概念的实践应用。通过理解和掌握这个项目,我们可以深入理解C语言的多进程编程以及进程间通信的机制。 首先,我们要了解C语言在多进程编程中的基本...
双工通信意味着服务器和客户端都可以同时发送和接收数据,这就需要用到两个独立的套接字——一个用于发送,一个用于接收。在C语言中,这通常通过select()、poll()或epoll()等I/O多路复用技术来实现,以便同时监控多...
在计算机网络中,SOCKET是一种进程间通信(IPC)机制,它允许通过网络连接的两台机器上的进程相互通信。SOCKET分为两种类型:流式SOCK_STREAM(面向连接,如TCP)和数据报式SOCK_DGRAM(无连接,如UDP)。在Linux中...
本篇文章将详细讲解如何使用C语言实现TCP(传输控制协议)和UDP(用户数据报协议)这两种不同的网络通信协议,并讨论多服务器和多客户端的实现策略。 首先,TCP是一种面向连接的、可靠的、基于字节流的传输层通信...
Socket是应用层与传输层之间的一个接口,允许应用程序通过它来实现网络上的进程间通信。在C语言中,我们通常使用套接字库(通常为`<winsock2.h>`或`<sys/socket.h>`)来创建和操作Socket。 在VC++6.0环境下,首先...
1. **Socket**: Socket是进程间通信的一种方式,尤其适用于跨网络的通信。在本例中,服务器和客户端通过socket接口进行通信。 2. **端口定义**: 定义了端口号为8888,这是服务器监听连接的特定端口。端口号在0到...
Socket,通常被称为套接字,是网络通信中的一个抽象概念,它是进程间通信的一种方式,特别适用于跨网络的通信。在TCP/IP协议栈中,Socket接口提供了一组API,使得开发者可以构建网络应用,如HTTP服务器、FTP客户端等...
进程通信(IPC, Inter-Process Communication)是指两个或多个进程之间交换数据的方式,以实现协同工作。常见的进程通信方式包括管道(Pipe)、消息队列、共享内存、信号量、套接字等。 1. **管道(Pipe)**:管道...
6. **数据传输**:连接建立后,`send()`和`recv()`函数用于在两个进程之间发送和接收数据。`send()`将数据写入网络,而`recv()`读取接收到的数据。 7. **关闭Socket**:完成通信后,使用`close()`函数关闭socket...
Socket是操作系统提供的一种进程间通信(IPC)机制,它允许程序通过网络进行通信,仿佛两个程序在同一台机器上运行。在C语言中,我们通常使用`<sys/socket.h>`头文件来访问socket相关的API。 服务器端的Socket编程...
在Unix和类Unix系统中,如Linux,socket API允许程序员创建、连接和通信两个或多个进程,无论是同一台机器还是不同的机器。 3. **TCP/IP协议**:TCP(传输控制协议)和IP(互联网协议)构成了互联网的基础。TCP保证...
进程间通信是指两个或多个独立运行的进程之间进行数据交换的过程。这种通信方式使得进程可以共享资源,协同工作,提高系统的效率和响应性。 2. **主要的进程间通信方式** - **管道(Pipe)**:一种半双工通信方式...
Socket,又称为套接字,是网络通信的一种接口,它允许两个进程(可以是同一台机器上的,也可以是不同机器上的)通过网络进行数据交换。在C语言中,我们主要使用`<sys/socket.h>`头文件中的函数来创建和操作socket。 ...