|
创建tcp服务 在虚拟机上新建tcp_server.c: - #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <errno.h>
- #include <string.h>
- #include <sys/types.h>
- #include <sys/fcntl.h>
- #include <arpa/inet.h>
- #include <netinet/in.h>
- #include <sys/socket.h>
- #include <sys/wait.h>
- #include <pthread.h>
- #define SERVER_PORT 3861
- #define LISENT_NUM 10
- int main(int argc, char * argv[])
- {
- int sfd, cfd;
- struct sockaddr_in clientaddr;
- struct sockaddr_in serverAddr;
- char buff[1024];
- int size = sizeof(struct sockaddr);
- pthread_t client_thread[LISENT_NUM];
- if((sfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
- {
- perror("socket");
- exit(-1);
- }
- memset(&serverAddr, 0, sizeof(struct sockaddr));
- serverAddr.sin_family = AF_INET;
- serverAddr.sin_addr.s_addr = INADDR_ANY;
- serverAddr.sin_port = htons(SERVER_PORT);
- if (bind(sfd, (struct sockaddr*)&serverAddr, sizeof(struct sockaddr)) == -1)
- {
- perror("bind");
- close(sfd);
- exit(-1);
- }
- if(listen(sfd, LISENT_NUM) == -1)
- {
- perror("listen");
- close(sfd);
- exit(-1);
- }
- printf("#@ listen SERVER_PORT %d\n", SERVER_PORT);
- printf("main: server waiting connect...\n");
- if ((cfd = accept(sfd, (struct sockaddr *)&clientaddr, (socklen_t*)&size)) == -1)
- {
- perror("accept");
- close(sfd);
- return0;
- }
- printf("client (ip = %s : SERVER_PORT = %d) connect success\n", inet_ntoa(clientaddr.sin_addr), ntohs(clientaddr.sin_port));
- while (1)
- {
- usleep(1000*10);
- if (send(cfd, "hello MYD/YG2L", 6, MSG_NOSIGNAL) == -1)
- {
- perror("send");
- exit(-1);
- }
- printf("send: hello MYD/YG2L\n");
- usleep(1000*10);
- if(recv(cfd, buff, sizeof(buff), 0) == -1)
- {
- perror("recv");
- exit(-1);
- }
- printf("receive: %s\n", buff);
- }
- return0;
- }
复制代码
- 加载sdk:source /opt/yg2lx/environment-setup-aarch64-poky-linux
- 编译:
- lugl@lugl-virtual-machine:~/MYDG2L$ source /opt/yg2lx/environment-setup-aarch64-poky-linux
- lugl@lugl-virtual-machine:~/MYDG2L$ $CC tcp_server.c -o tcp_server
- In file included from /opt/yg2lx/sysroots/aarch64-poky-linux/usr/include/bits/libc-header-start.h:33,
- from /opt/yg2lx/sysroots/aarch64-poky-linux/usr/include/stdio.h:27,
- from tcp_server.c:1:
- /opt/yg2lx/sysroots/aarch64-poky-linux/usr/include/features.h:397:4: warning: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Wcpp]
- # warning _FORTIFY_SOURCE requires compiling with optimization (-O)
- ^~~~~~~
- lugl@lugl-virtual-machine:~/MYDG2L$ ls
- tcp_server tcp_server.c
- lugl@lugl-virtual-machine:~/MYDG2L$ file tcp_server
- tcp_server: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-aarch64.so.1, for GNU/Linux 3.14.0, BuildID[sha1]=c81069580d81fc0f4ac9bb00ecdd7ddf822e251f, with debug_info, not stripped
复制代码
- root@myir-yg2lx:~# chmod 777 tcp_server
- root@myir-yg2lx:~# ./tcp_server
- #@ listen SERVER_PORT 3861
- main: server waiting connect...
- client (ip = 192.168.3.166 : SERVER_PORT = 53634) connect success
- send: hello MYD/YG2L
- receive: hello
- send: hello MYD/YG2L
- receive: hello
- send: hello MYD/YG2L
- receive: hello MYD
- send: hello MYD/YG2L
复制代码
发送数据后,服务器打印出接收到的数据,客户端也接收到数据。
|
|