硬件环境:host是win10 ,VMware下装了一个ubuntu.
我想完成的功能:同一个工程,在win10中VS2019可以编译,ubuntu下也可以编译。
ubuntu 下创建共享文件夹\share ip:192.168.9.81
win10 下用VS2019创建工程并放在ubuntu 下。
1.虚拟机设置
2.win10 -ubuntu创建共享文件夹-Samba设置
3.win10-VS创建项目并编译
4.ubuntu-makefile编译
1.虚拟机设置
sudo apt-get install open-vm-tools #安装虚拟机的工具
sudo vmhgfs-fuse .host:/share /home/tang/share -o allow_other -o uid=1000
/etc/fstab:
.host:/shared_folder /shared_folder fuse.vmhgfs-fuse allow_other,uid=1000,gid=1000,auto_unmount,defaults 0 0
2.win10 -ubuntu创建共享文件夹-Samba设置
apt-get install samba
#配置文件位置: /etc/samba/smb.conf
[share]
comment = my share directory
path = /share
browseable = yes
writable = yes
guest ok =yes
mkdir /share
chmod 777 /share
ls -L|grep #前面的输出成为后面的输入
smbd #启动
pkill smbd #杀掉
ps -ef|grep smbd #查看
3.win10-VS创建项目并编译
用VS编译程序:
1.main.cpp代码:
// main.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include<string.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#ifdef WIN32 //预处理,会在编译前
#include <windows.h>
#pragma comment(lib,"ws2_32.lib")
#else
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <arpa/inet.h>
#define closesocket close //定义宏
#endif
int main()
{
#ifdef WIN32
WSADATA ws;
WSAStartup(MAKEWORD(2, 2), &ws);
#endif
//1.初始化
for (int i = 0; i < 1000; i++)
{
int sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == -1)
{
printf("create fail!\n");
return -1;
}
printf("[%d]", sock);
sockaddr_in saddr;
unsigned short port = 8080;
saddr.sin_family = AF_INET;
saddr.sin_port = htons(port); //本地字节序-> 网络字节序
saddr.sin_addr.s_addr = htonl(0);
if (bind(sock, (sockaddr*)&saddr, sizeof(saddr)) != 0)
{
printf("bind port %d failed!\n", port);
}
printf("bind port %d sucessed!\n", port);
listen(sock, 10); //队列的个数
sockaddr_in caddr;
socklen_t len = sizeof(caddr);
int client = accept(sock, (sockaddr*)&caddr, &len);
printf("accpet %d\n", client);
char* ip = inet_ntoa(caddr.sin_addr);
unsigned short cport = ntohs(caddr.sin_port);
printf("client ip is %s,port is %d\n",ip,cport);
closesocket(sock);
}
getchar();
return 0;
// }
//2.引用
// 编译 make sockettest
// 运行 ./sockettest
// 查看进程限制的个数 ulimit -n 一个进程需要超过1024个
// 修改进程限制的个数 ulimit -n 3000
//3.结束
}
4.ubuntu-makefile编译
tcpserver:main.cpp
g++ main.cpp -o tcpserver -std=c++11
命令说明
#$+ 对应依赖项 $@对应目标 -fpic 代码与位置无关 -shared 编成动态库 -std=c++11
#tab键而非空格键