socket 通讯 端口绑定 问题 解答

如果想深入弄懂它的原理:建议阅读《UNIX网络编程》

socket,我们一般指的是长连接,但是原来还有短连接,正确的解释是:

1. 如果是短链接,使用同步socket。例如http服务器、转接服务器等等。

2. 如果是长链接,使用异步socket。例如通讯系统(QQ / Fetion)、webgame等。

介绍一下我的环境搭建:

1.一台手机,iphone手机,用来做客户端

2.一个模拟器,在Mac电脑端,iphone模拟器,用来做服务端

3.手机和模拟器都在同一个网段;

成功运行效果:

成功情况第一种设计:

1.客户端的IP设置为服务器的IP,端口设置的是服务器那边设置的绑定端口;

2.服务端IP设置为电脑Mac的真实IP内网地址+绑定的端口,端口由服务器自己设定;

成功情况第二种设计:

1.客户端的IP设置为服务器的IP,端口设置的是服务器那边设置的绑定端口;

2.服务端IP设置为接收所有的IP(设置的方法参考下面的代码)+绑定的端口,端口由服务器自己设定;

1.问:客户端和服务端什么时候需要绑定端口和IP,

2.问:客户端绑定端口的作用是什么?绑定IP的作用是什么?

3.问:服务端绑定端口的作用是什么?绑定IP的作用是什么?

  • 服务器绑定端口,是为了在这个端口提供服务;这么说的话,就是服务端会有很多不同的端口,提供不同的服务,所以必须绑定端口;
  • 服务器绑定IP,绑定服务器IP的目的是限制了服务端进程创建的socket只接受那些目的地为此IP地址的客户连接;限制了,就是说如果客户端的目的IP不是服务器,就无法和服务器通信;
  • 如果不想限制,做法是参考下面代码:
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);

1.UDP连接用到的连接语法是:

sendto(),是把UDP数据报发给指定地址;struct sockaddr_in类型,指明UDP数据发往哪里报。

recvfrom(),是从指定地址接收UDP数据报。struct sockaddr_in类型,指明从哪里接收UDP数据报。

参考网友的环境搭建:不同的地方在于:

  一般网上说的都是同一个应用,如果是这样,服务端和客户端IP和端口的设置解释应该是:

  因为服务器是时时在监听有没有客户端的连接,如果服务器不绑定IP和端口的话,客户端上线的时候怎么连到服务器呢,所以服务器要绑定IP和端口,而客户端 就不需要了,客户端上线是主动向服务器发出请求的,因为服务器已经绑定了IP和端口,所以客户端上线的就向这个IP和端口发出请求,这时因为客户开始发数 据了(发上线请求),系统就给客户端分配一个随机端口,这个端口和客户端的IP会随着上线请求一起发给服务器,服务收到上线请求后就可以从中获起发此请求 的客户的IP和端口,接下来服务器就可以利用获起的IP和端口给客户端回应消息了。

参考资料:http://blog.csdn.net/suxinpingtao51/article/details/11809011

时间: 2024-10-27 13:01:10

socket 通讯 端口绑定 问题 解答的相关文章

Android与C#的socket通讯

物联网学习过程中遇到了需要PC端与Android端使用TCP协议进行通讯的问题,记录下来以便今后复习. 这里我PC端服务器使用的是C#编写的代码: int port = 2000;//端口号 string host = "192.168.1.100";//服务器IP地址, IPAddress ip = IPAddress.Parse(host); IPEndPoint ipe = new IPEndPoint(ip, port); Socket s = new Socket(Addre

iOS开发socket通讯

写写socket通讯那些事儿.     socket通讯公司用于给服务器发一些指令用于控制智能家居类的设备.socket无非就是发过来发过去,至于具体内容跟服务器协商就好.接下来先说说与socket通讯配合使用的socket Tool 的mac 工具.首先打开工具(工具连接以及socket用到的文件:SocketToolfor_mac_and_Third_for_xocde_socket.zip)选择Tcp Server 然后点击创建 端口号输入一个数字,60000 把. 注意可能完成之后这个数

试解析Tomcat运行原理(一)--- socket通讯

关于这篇文章也确实筹划了很久,今天决定开篇写第一篇,说起tomcat首先很容易联想到IIS,因为我最开始使用的就是.net技术,我第一次使用asp写学生成绩管理系统后,很茫然如何让别人都能看到或者说使用这个系统呢?由此认识了IIS,它是一个web容器,天生的多线程,及时响应用户提交的请求返回html页面,这就是我了解的最初的web容器的功能,由此我们来认识tomcat也并不困难,可以的话,在了解完tomcat后我们可以继续了解jboss.jetty等,好我们进入主题. 我们在平时开发的过程中是在

windows 与 Linux SOCKET通讯

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 windows client 端口 // Def_win_client_socket_test.cpp :

Java Socket通讯---网络基础

java socket 通讯 参考慕课网:http://www.imooc.com/learn/161 一.网络基础知识 1.1 通讯示意图 1.2 TCP/IP协议 TCP/IP是世界上应用最为广泛的协议 是以TCP/IP为基础的不同层次上多个协议的集合 也称TCP/IP协议簇 或 TCP/IP协议栈 TCP:Transmission Control Protocol, 传输控制协议 IP:Internet Protocol,互联网协议 1.3 TCP/IP模型 1.4 IP地址 为实现网络中

Protobuf实现Android Socket通讯开发教程

本节为您介绍Protobuf实现Android Socket通讯开发教程,因此,我们需要先了理一下protobuf 是什么? Protocol buffers是一种编码方法构造的一种有效而可扩展的格式的数据. 谷歌使用其内部几乎RPC协议和文件格式的所有协议缓冲区. protobuf 适用的语言 正宗(Google 自己内部用的)的protobuf支持三种语言:Java .c++和Pyton,很遗憾的是并不支持.Net 或者 Lua 等语言,但社区的力量是不容忽视的,由于protobuf确实比J

UDP之socket通讯

分享一个简单的socket通讯,简单易理解 TCP协议与UDP协议的区别 1.基于连接与无连接:2.对系统资源的要求(TCP较多,UDP少):3.UDP程序结构较简单:4.流模式与数据报模式 :5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证. 客户端 1 package com.UDP.socket; 2 3 import java.net.DatagramPacket; 4 import java.net.DatagramSocket; 5 import java.

关于Socket通讯中的Close_wait状态

关于Socket通讯中的Close_wait状态 文/转 编辑 编者按:使用Socket通讯,有时我们查看端口状态的时候,经常会发现Socket处于close_wait状态,从而影响系统性能,此文或许会给你一些答案. 最近遇到的一个关于socket.close的问题,在某个应用服务器出现的状况(执行netstat -np | grep tcp): tcp        0      0 10.224.122.16:50158         10.224.112.58:8788        

关于Socket通讯原理

通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄. 在Internet上的主机一般运行了多个服务软件,同时提供几种服务. 每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务. Socket正如其英文原意那样,像一个多孔插座.一台主机犹如布满各种插座的房间, 每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目. 客户软件将插头插到不同编号的插座,就可以得到不同的服务. Socket和ServerSo