Linux如何通过3g网络发送图片到手机里?他们说是用socket发送http请求 但是手机的ip地址是不固定的呀

socket编程中recv每次都接收不到数据,求解
[问题点数:40分,结帖人huangsir2011]
socket编程中recv每次都接收不到数据,求解
[问题点数:40分,结帖人huangsir2011]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2013年12月 C/C++大版内专家分月排行榜第二2013年12月 Linux/Unix社区大版内专家分月排行榜第二2013年11月 C/C++大版内专家分月排行榜第二2013年10月 C/C++大版内专家分月排行榜第二
2013年12月 C/C++大版内专家分月排行榜第二2013年12月 Linux/Unix社区大版内专家分月排行榜第二2013年11月 C/C++大版内专家分月排行榜第二2013年10月 C/C++大版内专家分月排行榜第二
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。手机A连接WIFI网络,手机B连接3G网络。如何实现AB通信?(不能使用蓝牙)花生壳?_百度知道
手机A连接WIFI网络,手机B连接3G网络。如何实现AB通信?(不能使用蓝牙)花生壳?
提问者采纳
如果没有其他硬;技术(hole punch),软件支持;打洞&quot, 需要A或者B其中的一个有公网地址(固定IP地址), 然后使用UDP或TCP Socket连接.或者使用&quot一般来说
socket在局域网我知道,但在不同网络好像连接不上啊!求解
3G网络通常是无法获得公网IP的. 除非你和运营商签订一个特殊的协议才能够取得.手机连接的WiFi网络必须连接internet (需要路由器). 这种情况下一般你通过路由器都可以获得公网IP. 如果你有管理员权限可以通过路由设置或者DMZ主机让你的手机侦听.
能不能给点代码提示呢?
提问者评价
其他类似问题
为您推荐:
花生壳的相关知识
其他2条回答
那这样的话就得用VPN来实现了
QQ视频,望采纳
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Linux下的socket编程实践(一)网络基本知识以及TCP/IP简述
您当前位置: &
[ 所属分类
作者 红领巾 ]
ISO/OSI七层参考模型1.物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。(标志:RJ-45) 2.数据链路层:定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输,交换机属于本层。 3.网络层:在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。(标志:路由选择,IP/OSPF,ICMP,IGMP) 4.传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做段。 5.会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。 6.表示层:可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。例如,PC程序与另一台计算机进行通信,其中一台计算机使用扩展二一十进制交换吗(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换。 7.应用层:是最靠近用户的OSI层。这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。 (标志:HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3)TCP/IP四层模型ISO制定的OSI参考模型的过于庞大、复杂招致了许多批评。与此对照,由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用。应用层: FTP,TELNET为了完成一定的用户需求,自定义协议,QQ协议传输层:TCP UDP网络层: ICMP,IP,IGMP数据链路层: ARP,RARP硬件接口运行FTP协议的两台主机:每个层次具有自己的协议,每层之间进行通信;他们的语言一致,我们可以看作是A进程和B进程之间进行对等通信,也就是虚电路(并不是真正的建立连接线)对等数据传输的是逻辑流,例如现在有两个人通过手机进行通信,好像就在耳边,其实是通过电磁波。封装:分用:端口:端口由IANA分配和控制他们紧密绑定一些服务:0~1023注册端口:,在这之间端口松散的绑定一些服务动态或者私有(临时)端口 (实际上从1024)开始分配链路层:以太网的帧格式链路层的数据包,称为以太网帧; 链路层不识别IP地址[因为IP地址是逻辑地址],链路层识别物理网卡MAC地址[硬件地址]; 需要根据IP地址(逻辑地址)找到对方的MAC地址(ARP地址解析协议)[MAC —& IP地址方向地址解析];MAC-&IP 反向地址解析(RARP协议); 类型(2字节)用来区分IP,ARP,RARP。//以太网首部代码
struct ethernet_hdr
char dest_mac[6];
char src_mac[6];
MTU/路径MTU链路层具有最大传输单元MTU这个特性,它限制了数据帧的最大长度,不同的网络类型都有一个上限值。以太网的MTU是1500,你可以用 netstat -i 命令查看这个值。如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就要对数据包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU。另外,多个网络的链路层可能有不同的MTU,选择通信路径中较小的MTU,称作路径MTU;但是分片会降低网络的通信效率,应该尽量避免。ARP地址解析协议本地ARP高速缓存//ARP首部代码
struct arp_hdr
un // 固定0x0800(代表为IP协议做请求)
// 固定6(即MAC地址长度)
// 固定4 (即IP地址长度)
// Request - 1, Reply - 0x0002
unsigned char sender_mac[6];
// 发送者MAC
unsigned char sender_ip[4]; // 发送者IP
unsigned char dest_mac[6];
// 接收者MAC
unsigned char dest_ip[4];
// 接收者IP
源端和目的端都将加入ARP缓冲区。RARP反向地址解析协议,适用于无盘工作站,IP一般存于配置文件中这个时候要想获取IP地址,就通过RARP协议,通过向RARP服务器发送请求网络层:IP数据报首部最大长度是15*4=60个字节,15最为单位,选项最多有40个字节。协议类型8位 判断高层是TCP还是UDP,头部校验和校验IP头部的完整性,并不校验数据的完整性。服务类型:IP数据报最大可达65535;分片共享一个标识号网际校验和算法: http://blog.csdn.net/zhq651/article/details/8515575//IP首部代码
struct ip_hdr
unsigned short hdr_
char src_ip [4];
char dest_ip [4];
路由过程:顺序:搜索匹配的主机地址搜索网络地址搜索默认表项ICMP协议ICMP协议用于传递差错信息、时间、回显、网络信息等控制数据,工作于网络层(IP),Ping程序使用ICMP协议实现。//ICMP首部代码
struct icmp_hdr
// ICMP报文类型
// “子类型”
unsign // 校验和
UDP报文格式//UDP首部代码
struct udp_hdr
unsigned short src_
unsigned short dest_
}; TCP报文头部:连接建立三次握手连接终止四次挥手注:慢启动中的慢 是指基数比较小。步骤a:应用程序ping会判断发送的是主机名还是IP地址,调用函数gethostbyname()解析主机机B,将主机名转换成一个32位的IP地址。这个过程叫做DNS域名解析.步骤b:ping程序向目的IP地址发送一个ICMP的ECHO包步骤c:将目标主机的IP地址转换为48位硬件地址,在局域网内发送ARP请求广播,查找主机B的硬件地址。步骤d:主机B的ARP协议层接收到主机A的ARP请求后,将本机的硬件地址填充到应答包,发送ARP应答到主机A。步骤e:发送ICMP数据包到主机B步骤f:主机B接收到主机A的ICMP包,发送响应包。步骤g:主机A接收到主机B的ICMP包响应包。
本文系统(linux)相关术语:linux系统 鸟哥的linux私房菜 linux命令大全 linux操作系统
转载请注明本文标题:本站链接:
分享请点击:
1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
曾经沧海难为水,除却巫山不是云。---元稹
手机客户端
,专注代码审计及安全周边编程,转载请注明出处:http://www.codesec.net
转载文章如有侵权,请邮件 admin[at]codesec.netandroid手机在3G网络下可以使用Socket和固定IP的电脑通信吗? 如果可以的话,怎么实现呢?_百度知道
android手机在3G网络下可以使用Socket和固定IP的电脑通信吗? 如果可以的话,怎么实现呢?
提问者采纳
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&S&&nbsp.&&&&import&{&&&new&=&&&&&&&&&&&catch&&nbsp.&&nbsp.&&import&&&&&&&&&&&Thread(new&nbsp.{&&&&&nbsp当然可以了啊 &listMsg&nbsp:&&&SSocket(client));&&&&&&&&&&&{&import&&listMsg);&&&需要你android和PC端都写收发程序就好了啊 &&&&&&{&&&&&+&&&&&&&&&//服务器进程&&&&&&&&&&&&&nbsp.getInputStream());&nbsp.&你应该用的是TCP吧 &&&&&{&&&&&&&&&&&&&&&\r\n&&&&&&&=&nbsp.&&nbsp.start();//向服务器端第一次发送字符串&&&&(true)&=&&&{&&&&&&&&&&&nbsp.writeUTF(&{&&&&socket&&&&9991).&SocketClient&&&&client&&&&&&&&&&&package&&nbsp.&&&&ServerSocket&&&&&&&&&&&&&&nbsp.readUTF();&&&&&&&&&}&class&Thx.;&&&&&&&&catch&&nbsp.close();doListen()&nbsp:Java代码&&SocketManager&try&DataOutputStream(&SSocket(Socket&&nbsp:&&&&&&import&nbsp.0;Recive&&&&&&&&&这个需要先握手;&&}&&&DataOutputStream(netOut);&&&&&&&&&&nbsp.readUTF();&&&&&&&public&&&&&nbsp,就是建立连接之后;&&&&&&&nbsp.writeUTF(&&&@throws&&netOut&&&&&&public&nbsp!=&&&&&&&&DataInputStream&&&nbsp,才能通讯网上例子有不少 可以搜搜看看&&&&&}&&nbsp.accept();DataInputStream&&&nbsp.&S&&&&nbsp://&&manager&&&&=&&&&&&&&&&&&res&&&&&nbsp.;&&String&&&try&}&&args)&&&import&&socket&=&&&(socket&&&&&catch&{&&&&&&&{&nbsp.printStackTrace();&&&&implements&&&&&&&&&&=&&&nbsp.51&&nbsp.client&&&&&listMsg&&in.DataOutputSclass&&&/android-224076;&&{&&&&new&&&&&&&&&&&nbsp.doListen();&&&public&&&&&&finally&&&&=&}&&&&&&&nbsp.htmbye&&&&&&nbsp:&&&&&nbsp://e)&&&try&}&&&&if&&&&&&nbsp.close();&&&&&e)&&&nbsp.readUTF();&}&&&nbsp.net/segen_jaa/article/details/7552842下面是我搜的一个Server端Java代码&&&&&&=&(IOException&nbsp.println(&while&&&&&&&nbsp.printStackTrace();}&&&&DataInputStream(client.getOutputStream();&&&&&&Socket(&&}&}&nbsp.UnknownHostE&nbsp:&&new&&nbsp.&&&&&import&&&&&&&{&&&&&&&&&&&&&&&&&}&nbsp.IOE&&&&&&&list&&&IOException&&&&&&T&&&&&package&&OutputStream&&&&nbsp.getOutputStream());&+&&&&&String&&&&&&&&{&+&&&&&SocketManager().&);&&nbsp.DataOutputS&&\r\n&&&&&&&&&&nbsp.printStackTrace();S&&&);&&&nbsp.DataInputS&listMsg);=&in&&&&{&&&=&import&&run()&&&&&&(IOException&&&e;&DataOutputStream&&&&&&&127;&null)&&nbsp.writeUTF(&&&&nbsp.&&class&&&&&nbsp.SSocket&&&&&&&&&&@param&+&}&nbsp.static&&nbsp..ServerS&void&&&&&new&nbsp.println(&&&&&&&&&*/&&+&public&&&&&&&&public&&//&/**&&&&&&&&&&&&&&&&main(String[]&&&&&&&&&&&&&&&&&(UnknownHostException&&&&&&&&&ServerSocket(9991);&&SSocket&&;&}&&&&&nbsp.&&&&new&&&&&&&&&&&&&&void&&nbsp.0;=&&&&e)&&&&&nbsp.1&quot.OutputS&&&nbsp
提问者评价
谢谢,问题解决了。电脑IP必须是外网IP,重新设置了下解决了。
其他类似问题
为您推荐:
其他2条回答
果想同时的话,不行 ,需要指定其他IP给这台电脑。如果绑定了MAC。如果是局域网,且没有将IP与MAC地址绑定的话,则需要请网管或运营商将给你原来的电脑指定的IP,重新绑定在另外一台电脑网卡的MAC才可以
谢谢你的回复。
如果电脑有互联网的IP就可以。比如ADSL拨号上网,或者专线什么的。
android手机的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 websocket 本地ip地址 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信