1. 前言
一般Linux編程時,經常都會使用虛擬機跑Linux系統,VMware Workstation Pro 虛擬機里的系統不管是Linux、還是windows、還是其他系統想要上網就必須配置好虛擬網絡連接方式。VMware Workstation 支持共享、橋接,選擇網卡的方法自定義上網方式。
如果虛擬機里的系統想要擁有一個獨立的IP地址(路由器認為是一臺新設備),那么就需要設置成橋接模式。
如果虛擬機里的系統只想要上外網,而連接的WIFI又需要輸入密碼,或者像校園網這種,一個賬號不能多臺設備同時使用這種,那么就設置成NAT共享方式即可。
想要在虛擬機你跑的系統愉快的上網,進行各種網絡編程、服務器搭建,那么第一步首先得先把系統接入網絡才行。
下面章節就介紹ubuntu16.04、readhat6.3系統下如何配置網絡實現網絡連接。
2. ubuntu 16.04 設置網絡連接方式
2.1 打開虛擬機的網絡編輯器
2.2 選擇橋接電腦當前連接網絡的網卡
比如: 當前電腦使用有線連接路由器,那么就選擇橋接到有線網卡。如果當前電腦使用的是WIFI方式連接路由器,那么就選擇橋接到無線網卡。
如果不知道自己網卡的名字是哪一個怎么辦?
可以在windows下打開網絡適配器進行查看。
2.3 設置虛擬機的聯網方式
2.4 測試網絡是否暢通
3.5 編寫代碼測試網絡通信
使用代碼創建一個TCP服務器,然后windows系統通過網絡調試助手連接進來,進行通信。
#include
#include /* See NOTES */
#include
#include
#include
#include
#include
#include
#include
/* According to earlier standards */
#include
#include
#include
/*
設置網卡的IP地址
$ sudo ifconfig eth0 192.168.1.23
服務器創建流程:
1. 創建socket套接字(文件描述符)---類型open函數一樣
2. 綁定端口號(創建服務器:提供端口號和IP地址)
3. 設置監聽的客戶端數量(設置待處理的隊列最大緩存待連接的客戶端數量)
4. 等待客戶端連接(被動--阻塞): 多線程和多進程方式并發處理客戶端連接。
5. 實現通信(客戶端連接成功)
*/
int main(int argc,char **argv)
{
if(argc!=2)
{
printf("參數: ./tcp_server <端口號>\n");
return 0;
}
/*1. 創建socket套接字*/
int sockfd;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd<0)
{
printf("服務器:套接字創建失敗.\n");
return 0;
}
/*2. 綁定端口號*/
struct sockaddr_in addr;
addr.sin_family=AF_INET; //IPV4
addr.sin_port=htons(atoi(argv[1])); //65535
//addr.sin_addr.s_addr=inet_addr("192.168.2.16");
addr.sin_addr.s_addr=INADDR_ANY; //本地所有IP地址 "0.0.0.0"
if(bind(sockfd,(const struct sockaddr *)&addr,sizeof(struct sockaddr)))
{
printf("服務器:端口號綁定失敗.\n");
return 0;
}
/*3. 設置等待連接的客戶端數量*/
listen(sockfd,10);
/*4. 等待客戶端連接(被動--阻塞)*/
struct sockaddr_in client_addr;
socklen_t addrlen=sizeof(struct sockaddr_in);
int client_sockfd; //客戶端的套接字
client_sockfd=accept(sockfd,(struct sockaddr *)&client_addr,&addrlen);
if(client_sockfd<0)
{
printf("服務器:處理客戶端的連接失敗.\n");
return 0;
}
/*5. 實現數據通信*/
printf("連接上的客戶端IP地址:%s\n",inet_ntoa(client_addr.sin_addr));
printf("連接上的客戶端端口:%d\n",ntohs(client_addr.sin_port));
char buff[100];
int cnt;
while(1)
{
cnt=read(client_sockfd,buff,100);
buff[cnt]='\0';
printf("服務器接收的數據:%d,%s\n",cnt,buff);
sleep(5);
}
/*6. 關閉套接字*/
close(client_sockfd);
close(sockfd);
return 0;
}
3. RedHat 紅帽6.3系統
3.1 設置網絡
設置方法與ubuntu 系統一樣。
3.2 關閉防火墻
審核編輯:湯梓紅
-
Linux
+關注
關注
87文章
11292瀏覽量
209323 -
網絡編程
+關注
關注
0文章
71瀏覽量
10074 -
虛擬機
+關注
關注
1文章
914瀏覽量
28160
發布評論請先 登錄
相關推薦
評論