黑马程序员_网络编程(一)

------- android培训java培训、期待与您交流! ----------
网络通讯模型分为OSI模型和TCP/IP模型。OSI模型是国际标准化组织制定的理想化模型,而现在使用的是TCP/IP模型。如下图,模型分为应用层、传输层(TCP)、网际层(IP)和主机至网络层,我们主要在应用层和传输层之间进行Socket网络编程。

网络通信的三个要素:
1.IP地址:IP地址唯一标识一台主机地址,通过IP地址可找到目的主机。
2.端口号:端口号唯一标识目的主机上的某一网络应用程序。
3.定义通讯规则,即数据封装和拆包规则,国际组织定义了通用协议TCP/IP。

如下图,本机上的网络应用程序QQ要将数据发送到目的主机上同样运行的QQ程序,需要知道目的主机的IP地址和程序端口号,数据将由传输层开始向下封装,至物理层经物理线路发送到目的主机,只有由物理层向上拆包,最终发送给应用程序。


接下来,正式入手JAVA网络编程:
首先,IP地址在JAVA中被封装成InetAddress类。
获取本地主机
try {
			//获取本地主机
			InetAddress i = InetAddress.getLocalHost();
			//打印获取的主机名称
			System.out.println(i.getHostName());
			//打印获取的主机地址
			System.out.println(i.getHostAddress());
		} catch (UnknownHostException e) {
			e.printStackTrace();
		}
获取任意主机
try {
			//通过主机名称获取主机IP
			InetAddress i = InetAddress.getByName("61.135.169.121");
			//打印主机名称
			System.out.println(i.getHostName());
			//打印主机IP地址
			System.out.println(i.getHostAddress());
		} catch (UnknownHostException e) {
			e.printStackTrace();
		}
通过名称获取所有主机IP
try {
			//通过主机名称获取所有IP地址
			InetAddress[] i = InetAddress.getAllByName("www.baidu.com");
			//打印每台服务器的名称和IP
			for(int j = 0; j < i.length; j++) {
				System.out.println(i[j].getHostName());
				System.out.println(i[j].getHostAddress());
			}
		} catch(UnknownHostException e) {
			e.printStackTrace();
		}

端口号:是0~65535之间的数字,非对象。
未完待续。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
黑马程序员是一家IT培训机构,提供各种技术培训课程,包括网络通信相关的课程。在网络通信中,socket是一种编程接口,用于实现不同主机之间的通信。通过socket函数创建一个套接字,指定域名、类型和协议。域名可以是AF_INET、AF_INET6或AF_UNIX,类型可以是SOCK_STREAM(用于TCP通信)或SOCK_DGRAM(用于UDP通信),协议可以是0表示自动选择适合的协议。创建成功后,套接字会返回一个文件描述符,用于在后续的通信中进行读写操作。 在TCP通信中,服务器和客户端的流程大致相同。服务器首先使用socket函数创建套接字,然后使用bind函数绑定服务器地址结构,接着使用listen函数设置监听上限。服务器通过accept函数阻塞监听客户端连接,并使用read函数读取客户端传来的数据,进行相应的处理后,使用write函数将处理后的数据写回给客户端,最后使用close函数关闭套接字。客户端也是先使用socket函数创建套接字,然后使用connect函数与服务器建立连接,之后使用write函数将数据写入套接字,再使用read函数读取服务器返回的数据,最后使用close函数关闭套接字。 在UDP通信中,服务器和客户端的流程也有所不同。服务器使用socket函数创建套接字,指定类型为SOCK_DGRAM,然后使用bind函数绑定服务器地址结构。服务器通过recvfrom函数接收客户端传来的数据,并进行相应的处理,最后使用sendto函数将处理后的数据发送回给客户端。客户端同样使用socket函数创建套接字,然后通过sendto函数将数据发送给服务器,再使用recvfrom函数接收服务器返回的数据。 总之,socket网络通信是通过创建套接字实现不同主机之间的通信。根据使用的协议不同,可以选择TCP或UDP通信方式。服务器和客户端根据流程进行相应的操作,实现数据的传输和交互。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值