Unix/Linux进程间通信——Socket
2014-04-20 22:20
176 查看
server.c代码如下:
client.c代码如下:
#include <sys/socket.h> #include <arpa/inet.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int argc, char *argv[]) { int sd, client, bytes_read; struct sockaddr_in server; char buf[512]; // 1. Open a socket sd = socket(PF_INET, SOCK_STREAM, 0); if (sd < 0) { puts("Could not create socket"); return -1; } server.sin_family = AF_INET; server.sin_addr.s_addr = inet_addr("127.0.0.1"); server.sin_port = htons(8000); // 2. Bind to a address(and port) if (bind(sd, (struct sockaddr *)&server, sizeof(server)) < 0) { puts("Bind failed"); close(sd); return -1; } puts("Bind done"); // 3. Listen for incoming connections listen(sd, 8); while (1) { // 4. Accept connections puts("Waiting for incoming connections..."); client = accept(sd, NULL, NULL); if (client < 0) { puts("Accept failed"); } puts("Connection accepted"); // 5. Read/Write bytes_read = recv(client, buf, sizeof(buf), 0); if (bytes_read > 0) { puts(buf); } close(client); } close(sd); return 0; }
client.c代码如下:
#include <sys/socket.h> #include <arpa/inet.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> int main(int argc, char *argv[]) { struct sockaddr_in server; int sd; char *message; // 1. Create a socket sd = socket(PF_INET, SOCK_STREAM, 0); if (sd < 0) { printf("Could not create socket"); return -1; } server.sin_addr.s_addr = inet_addr("127.0.0.1"); server.sin_family = AF_INET; server.sin_port = htons(8000); // 2. Connect to remote server if (connect(sd, (struct sockaddr *)&server, sizeof(server)) < 0) { puts("Connect error"); close(sd); return -1; } puts("Connected"); // 3. Send some data message = "Hello World!"; if (send(sd, message, strlen(message)+1, 0) < 0) { puts("Send failed"); close(sd); return -1; } puts("Send done"); close(sd); return 0; }
相关文章推荐
- 判断ip是否在线之linux下进程间通信(Unix domain socket)
- linux进程间通信--本地socket(tcp部分)
- Linux进程间通信-基于socket,过渡到网络编程
- Linux进程间通信方式--本地socket
- Linux下的IPC-UNIX Domain Socket
- Unix/Linux环境下的Socket编程
- Linux高级进程间通信:UNIX域套接字
- UNIX_SOCKET 进程间通信
- Linux下的IPC-UNIX Domain Socket
- Linux下的IPC-UNIX Domain Socket
- Linux/Unix服务端和客户端Socket编程入门实例(含源码下载)
- 由一个简单需求到Linux环境下的syslog、unix domain socket
- linux下进程间通信系列(四、socket编程)转
- UNIX/Linux进程间通信IPC系列(一)总论
- Linux进程间通信方式--本地socket
- linux进程间通信--socket套接字 实例代码
- Linux socket本地进程间通信之UDP
- 细说linux IPC(一):基于socket的进程间通信(上)
- Linux 环境进程间通信-socket
- unix/linux socket 编程一,简单多进程tcp socket server流程