基于TCP协议的网络通信

**重点内容**1.使用InetAddress(IP地址类)

这个类有点儿奇葩,没有提供构造方法。而是有两个静态方法来实例化。

·getByName(String host) 通过主机名获取对应的InetAddress对象

·getByAddress(byte[] addr) 通过IP地址获取对应的InetAddress对象

getCononicalHostName() 获取IP地址的全限定域名

getHostAddress() 返回IP地址字符串

getHostName() 获取IP地址的主机名

getLocalHost() 获取本机IP地址对应的InetAddress实例

获取本机的IP地址:

InetAddress address = InetAddress.getLocalHost();
String ipAddr = address.getHostAddress();
System.out.println(ipAddr);

2.基于TCP协议的网络编程

在通信的两端各建立一个Socket,从而在两点之间形成一个虚拟的网络链路。两端的程序就可以通过虚拟链路进行通信。

Java使用Socket对象来代表两端的通信端口,并通过Socket产生的IO流来进行网络通信。

IP协议: 负责将消息从一个主机传送到另一个主机,消息在传送过程中被分割成了一个个的小包。

不能解决数据分组在传输过程中可能出现的问题。为了无差错。引入TCP协议。

TCP协议:端对端的协议,两台主机连接的时候,TCP协议为他们建立了一个连接:发送和接受数据的虚拟链路(Socket)

可以正确的把数据传输到另一端。因为,当数据传输到另一端的时候,接受端会发送一条确认消息。如果没有收到确认消息的话,则会重发。

使用ServerSocket创建TCP服务器端

用于监听来自客户端的Socket连接,如果没有连接,它会一直处于等待状态。

监听来自客户端连接请求的方法:

Socket accept() 接收到Socket请求,将会返回一个与客户端请求相对应的Socket。

创建ServerSocket

ServerSocket(int port) 指定端口创建一个ServerSocket

使用完毕后,调用ServerSocket的close方法来关闭Socket。

为了能够一直接收客户端请求,通常把accept放在死循环中

示例:

ServerSocket ss = new ServerSocket(20000);

while(true)

{

Socket socket = ss.accept();

//通过Socket进行通信

}

ss.close();

使用Socket进行通信

在客户端直接使用Socket对象。

Socket(InetAddress,int port)

创建连接到远程主机,远程端口的Socket

例如: Socket s = new Socket(“192.1.1.168”,30000);

getInputStream 输入流 从Socket中取出数据

getOutputStream 输出流 向Socket输出数据

示例: 通过本地主机作为服务端向手机发送消息

ServerSocket ss = new ServerSocket(6500);
while(true)
{
    //获取相应端口号的Socket
    Socket s = ss.accept();
    //获取输出流
    OutputStream os = s.getOutputStream();
    os.write("你好吖~".getBytes("utf-8"));
    os.close();
    s.close();
}

手机作为客户端接收信息

//此处的IP地址应该是服务端的IP,端口号也要和服务端的端口相同
Socket socket = new Socket("192.168.1.1",6500);
InputStream is = socket.getInputStream();
//之后就是正常的IO操作,不写了~~

版权声明:刚出锅的原创内容,希望对你有帮助~

时间: 2024-12-21 06:12:05

基于TCP协议的网络通信的相关文章

网络编程——基于TCP协议的Socket编程,基于UDP协议的Socket编程

Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服务器进程B1同时为客户进程A1.A2和B2提供服务. Socket概述 ①   所谓Socket通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过“套接字”向网络发出请求或者应答网络请求. ②   Socket是连接运行在网络上的两个程序间的双向通信的端点. ③  

(1)网络编程的常识 (2)基于tcp协议的编程模型 (3)tcp协议和udp协议的比较 (4)基于udp协议的编程模型

1.网络编程的常识 目前主流的网络通讯软件有:微信.QQ.YY.陌陌.探探.飞信.阿里旺旺.... 在吗? 1.1 七层网络模型(熟悉) 为了保证数据传递的可靠安全等等,ISO(国际标准委员会组织)将数据的传递从逻辑上划分为以下七层: 应用层.表示层.会话层.传输层.网络层.数据链路层.物理层. 在发送数据之前要按照上述七层协议从上到下一层一层进行加包处理,再发送出去; 在接收数据之后要按照上述七层协议从下到上一层一层进行拆包处理,再解析出来: 1.2 常用的协议(熟悉) http协议 - 超文

Java中的基于Tcp协议的网络编程

一:网络通信的三要素? IP地址     端口号     通信协议 IP地址:是网络中设备的通信地址.由于IP地址不易记忆,故可以使用主机名.本地环回地址,127.0.0.1   本地主机名localhost 端口号:发送端准备的数据要发送到指定的目的应用程序上,为了标识这些应用程序,所以用网络数字来标识这些不同的应用程序,这些数 字称为端口号.端口号是不同进程之间的标识.一般来说,有0~65535的端口可供使用,但是1~1024系统使用,或者称作保留端口. 通信协议:指定义的通信规则,这个规则

用c++开发基于tcp协议的文件上传功能

用c++开发基于tcp协议的文件上传功能 2005我正在一家游戏公司做程序员,当时一直在看<Windows网络编程> 这本书,把里面提到的每种IO模型都试了一次,强烈推荐学习网络编程的同学阅读,比 APUE 讲的更深入 这是某个银行广告项目(p2p传输视频)的一部分 IO模型采用的阻塞模式,文件一打开就直接上传 用vc 2003编译,生成win32 dll 麻雀虽小五脏俱全,CSimpleSocket,CReadStream dll 输出一虚类 extern "C" __d

浅析C#基于TCP协议的SCOKET通信

TCP协议是一个基本的网络协议,基本上所有的网络服务都是基于TCP协议的,如HTTP,FTP等等,所以要了解网络编程就必须了解基于TCP协议的编程.然而TCP协议是一个庞杂的体系,要彻底的弄清楚它的实现不是一天两天的功夫,所幸的是在.net framework环境下,我们不必要去追究TCP协议底层的实现,一样可以很方便的编写出基于TCP协议进行网络通讯的程序. C#基于TCP协议的网络通讯 要进行C#基于TCP协议的网络通讯,首先必须建立同远程主机的连接,连接地址通常包括两部分--主机名和端口,

基于TCP协议的服务器中转简易聊天

项目比较简单:主要使用了TCP传输协议.多线程和swing窗口,以及IO流读写. 功能:各窗口之间简单的收发信息,另外附加一个抖动的效果. 服务器代码: 1 package com.java; 2 3 import java.awt.Dimension; 4 import java.awt.Toolkit; 5 import java.awt.event.ActionEvent; 6 import java.awt.event.ActionListener; 7 import java.awt.

基于TCP协议的简单Socket通信笔记(JAVA)

好久没写博客了,前段时间忙于做项目,耽误了些时间,今天开始继续写起~ 今天来讲下关于Socket通信的简单应用,关于什么是Socket以及一些网络编程的基础,这里就不提了,只记录最简单易懂实用的东西. 1.首先先来看下基于TCP协议Socket服务端和客户端的通信模型: Socket通信步骤:(简单分为4步) 1.建立服务端ServerSocket和客户端Socket 2.打开连接到Socket的输出输入流 3.按照协议进行读写操作 4.关闭相对应的资源 2.相关联的API: 1.首先先来看下S

Android基础入门教程——7.6.3 基于TCP协议的Socket通信(2)

Android基础入门教程--7.6.3 基于TCP协议的Socket通信(2) 标签(空格分隔): Android基础入门教程 本节引言: 上节中我们给大家接触了Socket的一些基本概念以及使用方法,然后写了一个小猪简易聊天室的 Demo,相信大家对Socket有了初步的掌握,本节我们来学习下使用Socket来实现大文件的断点续传! 这里讲解的是别人写好的一个Socket上传大文件的例子,不要求我们自己可以写出来,需要的时候会用 就好! 1.运行效果图: 1.先把我们编写好的Socket服务

Android基础入门教程——7.6.2 基于TCP协议的Socket通信(1)

Android基础入门教程--7.6.2 基于TCP协议的Socket通信(1) 标签(空格分隔): Android基础入门教程 本节引言: 上一节的概念课枯燥无味是吧,不过总有点收获是吧,本节开始我们来研究基于TCP协议的Socket 通信,先来了解下Socket的概念,以及Socket通信的模型,实现Socket的步骤,以及作为Socket服务 端与客户端的两位各做要做什么事情!好的,我们由浅入深来扣这个Socket吧! 1.什么是Socket? 2.Socket通信模型: Socket通信