日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Ubuntu >内容正文

Ubuntu

USB共享网络:android手机通过USB与Ubuntu进行socket网络通信

發布時間:2023/12/15 Ubuntu 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 USB共享网络:android手机通过USB与Ubuntu进行socket网络通信 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

測試平臺:三星S4,內核3.4.5

Ubuntu版本:14.04

===========================

?

1. 打開手機移動熱點中USB網絡共享,并將手機通過USB連接到PC

2. Ubuntu下使用命令ifconfig

2.1 inet addr:192.168.42.193就是我們客戶端程序connect使用的地址:

address.sin_family = AF_INET;

address.sin_addr.s_addr = inet_addr("192.168.42.193");

address.sin_port = htons(9734);

len = sizeof(address);

result = connect(sockfd, (struct sockaddr *)&address, len);

2.2 服務器端也是使用192.168.42.193這個ip地址進行bind,調用bind()函數之后,為socket()函數創建的套接字關聯一個相應地址,發送到這個地址的數據可以通過該套接字讀取與使用。

server_address.sin_family = AF_INET;

server_address.sin_addr.s_addr = inet_addr("192.168.42.193");

server_address.sin_port = htons(9734);

server_len = sizeof(server_address);

bind(server_sockfd, (struct sockaddr *)&server_address, server_len);

或者使用: server_address.sin_addr.s_addr = htonl(INADDR_ANY); 意味著可以接收本系統所安裝的任何一個網卡的數據包。

?

3. 編寫代碼并編譯

arm-client3.c

/* Make the necessary includes and set up the variables. */#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;char ch = 'A';/* Create a socket for the client. */sockfd = socket(AF_INET, SOCK_STREAM, 0);/* Name the socket, as agreed with the server. */address.sin_family = AF_INET;address.sin_addr.s_addr = inet_addr("192.168.42.138");address.sin_port = htons(9734);len = sizeof(address);/* Now connect our socket to the server's socket. */result = connect(sockfd, (struct sockaddr *)&address, len);if(result == -1) {perror("oops: client3");exit(1);}/* We can now read/write via sockfd. */write(sockfd, &ch, 1);read(sockfd, &ch, 1);printf("char from server = %c\n", ch);close(sockfd);exit(0); }

server3.c

/* Make the necessary includes and set up the variables. */#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 server_sockfd, client_sockfd;int server_len, client_len;struct sockaddr_in server_address;struct sockaddr_in client_address;/* Remove any old socket and create an unnamed socket for the server. */server_sockfd = socket(AF_INET, SOCK_STREAM, 0);/* Name the socket. */server_address.sin_family = AF_INET;// server_address.sin_addr.s_addr = htonl(INADDR_ANY);server_address.sin_addr.s_addr = inet_addr("192.168.42.193");server_address.sin_port = htons(9734);server_len = sizeof(server_address);bind(server_sockfd, (struct sockaddr *)&server_address, server_len);/* Create a connection queue and wait for clients. */listen(server_sockfd, 5);while(1) {char ch;printf("server waiting\n");/* Accept a connection. */client_len = sizeof(client_address);client_sockfd = accept(server_sockfd, (struct sockaddr *)&client_address, &client_len);/* We can now read/write to client on client_sockfd. */read(client_sockfd, &ch, 1);ch++;write(client_sockfd, &ch, 1);close(client_sockfd);} }

服務器編譯:gcc -o server3 server3.c

客戶端編譯:arm-none-linux-gnueabi-gcc -static -o arm-client3 arm-client3.c

?

4. 運行

先將arm-client3 push到手機:adb push ./arm-client3 /sdcard/

Ubuntu下: ./server3

adb shell下: ./arm-client3

總結

以上是生活随笔為你收集整理的USB共享网络:android手机通过USB与Ubuntu进行socket网络通信的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。