VMware Workstation 虚拟机里的网络设置(ubuntu、readhat)

1. 前言

一般Linux编程时,经常都会使用虚拟机跑Linux系统,VMware Workstation Pro 虚拟机里的系统不管是Linux、还是windows、还是其他系统想要上网就必须配置好虚拟网络连接方式。VMware Workstation 支持共享、桥接,选择网卡的方法自定义上网方式。

如果虚拟机里的系统想要拥有一个独立的IP地址(路由器认为是一台新设备),那么就需要设置成桥接模式。

如果虚拟机里的系统只想要上外网,而连接的WIFI又需要输入密码,或者像校园网这种,一个账号不能多台设备同时使用这种,那么就设置成NAT共享方式即可。

想要在虚拟机你跑的系统愉快的上网,进行各种网络编程、服务器搭建,那么第一步首先得先把系统接入网络才行。

下面章节就介绍ubuntu16.04、readhat6.3系统下如何配置网络实现网络连接。

2. ubuntu 16.04 设置网络连接方式

2.1 打开虚拟机的网络编辑器

VMware Workstation 虚拟机里的网络设置(ubuntu、readhat)

2.2 选择桥接电脑当前连接网络的网卡

比如: 当前电脑使用有线连接路由器,那么就选择桥接到有线网卡。如果当前电脑使用的是WIFI方式连接路由器,那么就选择桥接到无线网卡。

VMware Workstation 虚拟机里的网络设置(ubuntu、readhat)

如果不知道自己网卡的名字是哪一个怎么办?

可以在windows下打开网络适配器进行查看。

VMware Workstation 虚拟机里的网络设置(ubuntu、readhat)

VMware Workstation 虚拟机里的网络设置(ubuntu、readhat)

VMware Workstation 虚拟机里的网络设置(ubuntu、readhat)

2.3 设置虚拟机的联网方式

VMware Workstation 虚拟机里的网络设置(ubuntu、readhat)

VMware Workstation 虚拟机里的网络设置(ubuntu、readhat)

VMware Workstation 虚拟机里的网络设置(ubuntu、readhat)

2.4 测试网络是否畅通

VMware Workstation 虚拟机里的网络设置(ubuntu、readhat)

VMware Workstation 虚拟机里的网络设置(ubuntu、readhat)

VMware Workstation 虚拟机里的网络设置(ubuntu、readhat)

VMware Workstation 虚拟机里的网络设置(ubuntu、readhat)

VMware Workstation 虚拟机里的网络设置(ubuntu、readhat)

3.5 编写代码测试网络通信

使用代码创建一个TCP服务器,然后windows系统通过网络调试助手连接进来,进行通信。

#include <stdio.h>
#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/select.h>

/* According to earlier standards */
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>

/*
设置网卡的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 系统一样。

VMware Workstation 虚拟机里的网络设置(ubuntu、readhat)

VMware Workstation 虚拟机里的网络设置(ubuntu、readhat)

VMware Workstation 虚拟机里的网络设置(ubuntu、readhat)

VMware Workstation 虚拟机里的网络设置(ubuntu、readhat)

VMware Workstation 虚拟机里的网络设置(ubuntu、readhat)

3.2 关闭防火墙

VMware Workstation 虚拟机里的网络设置(ubuntu、readhat)

上一篇:系列教程丨用 Docker 探索开源软件 —— Elasticsearch(三)


下一篇:阿里云Linux服务器登录密码忘记了怎么办?