1. 程式人生 > >ARM_Linux和虛擬機器linux通過socket通訊

ARM_Linux和虛擬機器linux通過socket通訊

其實沒什麼特殊的,就是記錄一下

開發板使用STM32F4,跑的uclinux系統,虛擬機器ubuntu12.04

首先保證ARM_linux和虛擬機器linux可以ping通,然後應該沒什麼問題

參考來源:http://blog.csdn.net/chencheng126/article/details/44260799

客戶端:client.c

#include<sys/socket.h>
#include<sys/types.h>
#include<unistd.h>
#include<netinet/in.h>
#include<stdint.h>
#include<errno.h>
#include<string.h>
#include<stdio.h>
#include<arpa/inet.h>
#define MAXSIZE 4096
int main(int argc,char **argv)
{

        if(argc!=2)
        {
                printf("usage: ./%s <address>\n",argv[0]);
                return 0;
        }

        int sfd;
        int domain=AF_INET;
        int type=SOCK_STREAM;
        int protocol=0;
//      char str_ip[15];
        struct sockaddr_in cltaddr,seraddr;
        char sendline[MAXSIZE],recvline[MAXSIZE];

        if((sfd=socket(domain,type,protocol))==-1)
        {
                printf("socket error :%s\n",strerror(errno));
                return 0;
        }

        memset(&seraddr,0,sizeof(seraddr));


/*      if(inet_pton(domain,"192.168.1.112",&cltaddr.sin_addr)!=1)
        {
                printf("inet_pton1 error :%s\n",strerror(errno));
                return 0;
        }

*/
//      cltaddr.sin_family=domain;
//      cltaddr.sin_port=htons(7000);

/*      if(bind(sfd,(struct sockaddr *)(&cltaddr),sizeof(cltaddr))==-1)
        {
                printf("bind error :%s\n",strerror(errno));
                return 0;
        }

*/
        seraddr.sin_family=domain;
        seraddr.sin_port=htons(8000);

        if(inet_pton(domain,argv[1],&seraddr.sin_addr)!=1)
        {
                printf("inet_pton2 error :%s\n",strerror(errno));
                return 0;
        }

//      printf("AF_INET=%d,%d\n",AF_INET,domain);
//      printf("sockaddr->family:%d\n",seraddr.sin_family);
//      printf("sockaddr->port:%d\n",seraddr.sin_port);
//      printf("sockaddr->sin_addr:%d\n",seraddr.sin_addr.s_addr);

        if(connect(sfd,(struct sockaddr *)(&seraddr),sizeof(seraddr))==-1)
        {
                printf("connect error :%s\n",strerror(errno));
                return 0;
        }

        printf("send msg to server:");
        scanf("%s",sendline);
        if(send(sfd,sendline,strlen(sendline),0)<0)
        {
                printf("send msg error :%s\n",strerror(errno));
                return 0;
        }

        int rec_len;
        if((rec_len=recv(sfd,recvline,MAXSIZE,0))==-1)
        {
                printf("recv msg error\n");
                return 0;
        }
        recvline[rec_len]='\0';
        printf("the recv msg:%s\n",recvline);
        close(sfd);
        return 0;
}

伺服器:server.c

#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<errno.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
int initserver(int type,const struct sockaddr *addr,socklen_t len,int qlen)
{

        printf("Server is running...\n");
        int fd;
//      int err=0;
        if((fd=socket(addr->sa_family,type,0))<0)
        {
                printf("socket error\n");
                return 0;
        }


        if(bind(fd,addr,len)<0)
        {
                printf("bing error\n");
                close(fd);
                return -1;
        }


        if(type==SOCK_STREAM||type==SOCK_SEQPACKET)
        {
                if(listen(fd,qlen)<0)
                        {
                                printf("listen error\n");
                                close(fd);
                                return -1;
                        }
        }

        return fd;

}

int main(void)
{
        int socket_fd,connect_fd;
        struct sockaddr_in seraddr;
        char buff[4096];

        seraddr.sin_family=AF_INET;
        seraddr.sin_addr.s_addr=htonl(INADDR_ANY);
        seraddr.sin_port=htons(8000);

        if((socket_fd=initserver(SOCK_STREAM,(struct sockaddr *)&seraddr,sizeof(seraddr),10))==-1)
        {
                printf("initserver error\n");
                return 0;
        }

        while(1)
        {
                if((connect_fd=accept(socket_fd,NULL,NULL))==-1)
                {
                        printf("accept error:%s\n",strerror(errno));

                        continue;
                }

        int n=recv(connect_fd,buff,4096,0);
        if(!fork())
        {
                if(send(connect_fd,"Hello,you are connected!\n",26,0)==-1)
                        printf("send error\n");
                close(connect_fd);
                return 0;
        }
        buff[n]='\0';
        printf("recv msg from client:%s\n",buff);
        close(connect_fd);
        }
        close(socket_fd);
        return 0;
}


相關推薦

ARM_Linux虛擬機器linux通過socket通訊

其實沒什麼特殊的,就是記錄一下 開發板使用STM32F4,跑的uclinux系統,虛擬機器ubuntu12.04 首先保證ARM_linux和虛擬機器linux可以ping通,然後應該沒什麼問題 參考來源:http://blog.csdn.net/chencheng126/

Delphi服務端PHP客戶端通過Socket通訊

在開始之前看下效果 PHP頁面作為客戶端傳送請求給作為服務端的Delphi應用程式 PHP客戶端頁面開啟如下 Delphi服務端應用程式開啟如下 每次PHP頁面重新整理一下,Delphi的文字框都顯示"我上線啦!"做的很粗糙,但是似乎可以作為某種功能的demo PHP

開發板通過NFS(網路檔案系統)虛擬機器通訊

前言 原創文章歡迎轉載,請保留出處。 若有任何疑問建議,歡迎回復。 郵箱:[email protected] 設定橋接模式 首先要講虛擬機器設定成橋接模式, 配置網路連線 然後在系統中配置網路連線為手動設定,配置如下:

維大難題:Linux 容器虛擬機器應該怎麼選?

馬哥Linux運維 來自:開源中國社群 編譯 連結:www.oschina.net/news/90833/linux-containers-vs-virtual-machines 原文:www.datamation.com/open-source/linux-containers-vs-vir

Linux入門小抄-part3-Linux基礎-vi/vim虛擬機器網路配置

vi/vim編輯器 學會使用vi編輯器是學習Linux系統的必備技術之一,因為一般的Linux伺服器是沒有GUI介面的,Linux運維及開發人員基本上都是通過命令列的方式進行文字編輯或程式編寫的。vi編輯器是Linux內建的文字編輯器,幾乎所有的類unix系統中都內建了vi

virtualbox centos6.7 主機虛擬機器之間通訊設定

一:環境軟體準備: 1、下載Oracle virtual box,進行安裝。Install VirtualBox from: https://www.virtualbox.org/wiki/Downloads 2、從http://mirrors.163.co

虛擬機器Linux圖形介面命令介面切換

在虛擬機器中安裝了Ubuntu系統     Google說進入命令列時使用Ctrl+Alt+F1快捷鍵,但是這樣操作時滑鼠消失了。然後虛擬機器一直提醒滑鼠移出或移入,但就是不能顯示滑鼠操作。     Google原因是:快捷鍵衝突。     解決辦法:從VMware

實現虛擬機器linux主機windows之間的檔案互傳

1.下載quick Easy FTP Server  安裝後 配置伺服器IP 伺服器埠 如圖所示: 設定使用者名稱和使用者密碼 以及伺服器資料夾。 配置完成後 點選左上角 綠色按鈕 當現實紅色按鈕時 說明FTP伺服器已搭建完畢 2.在Linux 系統下 點選如圖所示 c

虛擬機器Linux CentOS 橋接模式NAT模式配置靜態IP的完美方案

配置靜態IP實際上就是設定虛擬機器的網路配置和linux的3個配置檔案橋接模式1、首先設定這臺linux的網路介面卡為橋接模式:網路介面卡2、檢視主機網路配置Ctrl + R 開啟執行,輸入cmd回車,然後輸入ipconfig回車:IP資訊記住IPv4地址和預設閘道器3、虛擬

設定虛擬機器linux主機IP在同一網段

 首先ifconfig 看下自己的網絡卡   編輯配置檔案 vim ifcg-ens33 新增 BOOTPROTO,為dhcp是自動獲得ip,為static時是手動配置IP 然後再新增IPADDR ,IP地址,這個地址設定為和你主機一個網段的地址 GATEWAY 閘道

隨想錄(windowslinux進行socket通訊

【 宣告:版權所有,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】     在公司裡面,我們平時使用的機器一般都是windows系統,但是開發、編譯的機器往往是linux伺服器。通過ping、ftp、samba、telnet、ssh,人們

linuxsocket通訊,serverclient簡單例子

<span style="font-family: Arial, Helvetica, sans-serif;">server.c</span> ===================================================

虛擬機器安裝虛擬機器環境下安裝Linux作業系統

        記憶體1G基本上就夠用了,處理器數量不能超過電腦自身處理器數量,新CD/DVD  選擇已解壓的Linux映象iso檔案,網路介面卡選擇NAT 模式,usb控制,音效卡和印表機使用預設選項,顯示器,如果對自身電腦硬體配置不夠自信的話,建議不要勾選加速3D圖形,不然可能造成電腦卡頓。

利用SSH協議的常用工具軟體Putty以及freesshd本機(win10)虛擬機器(win7)連線起來。同時總結通過FTPSSH連線的異同特點。

先介紹下,我主機採用的是win10系統,而虛擬機器採用的是win7系統。 (1)先在主機上訪問官網下載putty軟體,點選標紅處進行下載。下載完成後出現如下圖所示的資料夾:雙擊putty應用程式便可開啟putty。 (2)開啟虛擬機器,下載f

oracle virtualbox裡的宿主機虛擬機器如何相互通訊?(使用NAT)

    在這裡需要了解三種網路連線方式(NAT、bridge adapter、host-only),在這就不闡述了,可以參考這篇博文:https://blog.csdn.net/ixidof/article/details/12685549    因為筆者使用的是NAT方式的

html面頁與JAVA通過Socket 通訊

數據 問題 tcp連接 pri 中文 消息 output 版本支持 引入 (原) 往常前後端通訊基本都是以ajax請求或是表單做數據交互的,這是一種無狀態的http協議,如果要做tcp協議的數據交互,能想到的技術也就socket了,可如果後端是JAVA,前端如何做socke

最詳細的虛擬機器linux安裝教程

Linux安裝 一、概要 介紹 Linux的安裝、常用命令、遠端訪問等入門級知識。學完本課程,具備初級軟體工程師對Linux知識的要求。 Linux 學習過程: 首先在 Windows下安裝虛擬機器管理軟體VMWare Workstation Pro 1

虛擬機器Linux安裝

材料: win10 VMware® Workstation 12 Pro; CentOS-6.4-x86_64-bin-DVD1.iso; 步驟: 1.安裝VMware客戶端;(略) 2.作業系統安裝步驟: 點選建立虛擬機器 典型快速安裝一路下一步(略);這裡

如何將虛擬機器Linux下的檔案移動到Windows下

最近在學習使用Linux抓包,是在虛擬機器上的linux作業系統下做的,但是在linux下對於資料包的分析很不方便,想要將資料包轉移到本地的Windows下使用Wirehsark分析,但是怎樣將虛擬機器linux下的檔案移動到Windows下呢(O_O)? 各位看官且聽我娓娓道來。(〃^ω^

mac系統下vmware安裝虛擬機器linux系統ubuntu

安裝linux系統主要是為了學習linux系統指令 安裝參考網址:https://blog.csdn.net/jackjia2015/article/details/50757430 出現的幾個問題: 莫慌,指的是虛擬機器中,不會對原本的mac系統有任何影響 安裝位置如下: