简单网络编程(Linux)
客户端通信流程:
1)、创建ClientSocket
2)、初始化ServerAddr
3)、连接到服务器connect
4)、利用write、read进行读写操作
5)、关闭ClientSocket
简单代码如下:
View Code
1 #include <netinet/in.h> 2 #include <arpa/inet.h> 3 #include <unistd.h> 4 #include <iostream> 5 #include <sys/socket.h> 6 #include <cstdlib> 7 8 using namespace std; 9 10 const int MAX_DATA_LENGTH = 255; 11 const short int SERVER_PORT = 9527; 12 13 int main(int argc, char** argv) 14 { 15 int sockfd = 0; 16 int len = 0; 17 struct sockaddr_in address; 18 int result = 0; 19 char ch[MAX_DATA_LENGTH] = "Hello Server!"; 20 21 sockfd = socket(AF_INET, SOCK_STREAM, 0); 22 23 address.sin_family = AF_INET; 24 address.sin_port = htons(SERVER_PORT); 25 address.sin_addr.s_addr = inet_addr("192.168.1.105"); 26 len = sizeof(address); 27 28 result = connect(sockfd, (struct sockaddr*)&address, len); 29 if (-1 == result) 30 { 31 cerr << "connect failed" << std::endl; 32 exit(EXIT_FAILURE); 33 } 34 35 write(sockfd, ch, MAX_DATA_LENGTH); 36 read(sockfd, ch, MAX_DATA_LENGTH); 37 cout << "receive from server is " << ch << std::endl; 38 close(sockfd); 39 exit(EXIT_SUCCESS); 40 }
服务器端通信流程:
1)、创建ServerSocket
2)、初始化ServerAddr
3)、将ServerSocket和ServerAddr绑定(bind)
4)、开始监听Listen
5)、进入While循环,不断的accept接入的客户端ClientSocket,进行读写操作(write、read)
6)、关闭ClientSocket
7)、关闭ServerSocket
简单代码如下:
View Code
1 #include <netinet/in.h> 2 #include <arpa/inet.h> 3 #include <unistd.h> 4 #include <iostream> 5 #include <string.h> 6 #include <cstdlib> 7 #include <sys/socket.h> 8 9 using namespace std; 10 11 const int MAX_DATA_LENGTH = 255; 12 const short int SERVER_PORT = 9527; 13 14 int main(int argc, char** argv) 15 { 16 int server_sockfd = 0; 17 int client_sockfd = 0; 18 int server_len = 0; 19 int client_len = 0; 20 struct sockaddr_in server_addr; 21 struct sockaddr_in client_addr; 22 int result = 0; 23 char ch[MAX_DATA_LENGTH] = {0}; 24 25 server_sockfd = socket(AF_INET, SOCK_STREAM, 0); 26 server_addr.sin_family = AF_INET; 27 server_addr.sin_port = htons(SERVER_PORT); 28 server_addr.sin_addr.s_addr = inet_addr("192.168.1.105"); 29 server_len = sizeof(server_addr); 30 31 if(-1 == bind(server_sockfd, (struct sockaddr*)&server_addr, server_len)) 32 { 33 cerr << "bingd failed"; 34 exit(EXIT_FAILURE); 35 } 36 if (-1 == listen(server_sockfd, 5)) 37 { 38 cerr << "Listen failed"; 39 exit(EXIT_FAILURE); 40 } 41 42 while(1) 43 { 44 cout << "server waiting" << std::endl; 45 client_len = sizeof(client_addr); 46 client_sockfd = accept(server_sockfd, (struct sockaddr*)&client_addr, (socklen_t*)&client_len); 47 48 read(client_sockfd, ch, MAX_DATA_LENGTH); 49 std::cout << "receive data is " << ch << std::endl; 50 strncpy(ch, "Hello Client!", MAX_DATA_LENGTH); 51 52 write(client_sockfd, ch, MAX_DATA_LENGTH); 53 close(client_sockfd); 54 memset(ch, 0, sizeof(ch)); 55 } 56 close(server_sockfd); 57 }