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
+關注
關注
88文章
11758瀏覽量
219006 -
網絡編程
+關注
關注
0文章
73瀏覽量
11108 -
虛擬機
+關注
關注
1文章
972瀏覽量
30466
發布評論請先 登錄
相關推薦
熱點推薦
VM下虛擬機與主機不能互ping通
用VM橋接方式將LINUX虛擬機加入主機的局域網,兩者一個網段一個網關,然后發現虛擬機能ping通局域網內除了主機外的所有設備,唯獨不能ping通主機,同樣,主機也不能ping 通虛擬機
發表于 04-10 21:55
虛擬機上的Linux系統掛載SD卡失敗原因分析
虛擬機上的Linux系統掛載SD卡失敗原因分析 虛擬機上安裝Linux系統后,相信很多人都碰到過在Linux系統中SD卡或U盤不能正常讀取的狀況。這里整理了一些常見的解決方法:1. 如果在
發表于 09-16 09:48
vm虛擬機構建局域網的三種鏈接模式介紹
的虛擬機還有主機還有互聯網是雙向連通的,通過這種方式可以構建局域網,只用將虛擬機的ip地址設置成與主機的同一個網段,而網關和子網掩碼設置成和主機相同就能實現
發表于 07-04 03:05
VMware中虛擬機網絡的設置方法
虛擬機linux上網問題一、VMware中虛擬機網絡的三種設置第一種:橋接(bridged)第二種:NAT第三種:Host only 。該模式下僅主機可以上網,
發表于 11-05 08:04
怎樣通過NAT模式去實現虛擬機共享主機網絡呢
內建立一個虛擬服務器,并為局域網用戶提供服務,那就得選擇該模式。NAT模式:Nat模式,虛擬機通過宿主機所在的網絡來訪問internet,即虛擬機把宿主機作為路由器來訪問互聯網。開始配
發表于 10-17 16:21
vm建好虛擬機找不到應該如何解決
1,今天裝vm12,虛擬機建好后,vm上面沒有對應的虛擬系統,網上搜了一下,有人說把防火墻關了就可以了,試了一下,果然湊效。
發表于 08-19 17:31
?0次下載
VMware虛擬機和主機傳輸文件
存放共享文件,我的路徑為: E:\\VMware\\Share 打開VMware,打開菜單欄的“虛擬機——設置”,如圖所示: 打開“硬件——網絡配置器”,選擇“NAT模式”: 打開“選項——共享文件夾”,選
vm虛擬機linux系統怎么編程
在虛擬機中編程Linux系統是學習和探索計算機科學的一個重要方面。使用虛擬機可以在主機上模擬出一個或多個獨立的計算環境,我們可以在其中安裝和運行不同的操作系統。通過創建虛擬機,我們可以
虛擬機如何運行c程序
虛擬機(Virtual Machine,VM)是一種模擬了物理計算機的軟件,可以在計算機上創建虛擬的硬件平臺,使得用戶可以在其中運行操作系統和應用程序。在
VM虛擬機上的網絡設置
評論