`
yaolinnan
  • 浏览: 56970 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
文章分类
社区版块
存档分类
最新评论

java网络编程

 
阅读更多

1、概述

随着互联网的不断发展,对网络应用程序的需求和要求也越来越高,所以网络编程也是java很重要的一个方面。网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输。

java的网络编程提供了两种通信协议 :TCP(传输控制协议)和UDP(数据报协议),其中TCP是可靠的,而UDP是不可靠的,网上的聊天工具一般采用这种协议。

 

2、IP地址

IP地址是表示一台计算机在互联网中唯一的标记,java的InetAddress类就是表示IP地址,其中分为Inet4Address和Inet6Address两个子类,分别表示IPv4和IPv6。常用方法有:getHostName()得到主机的IP地址,isReachable(int timeout)判断地址是否可以到达。

 

3、URL

URL是统一资源定位符,可以通过它找到互联网的任何资源(比如一个网页),而通过UrlConnection类得到远程网络资源的属性。<!-- Generated by javadoc (build 1.6.0-beta2) on Mon Mar 19 18:23:48 CST 2007 -->

<noscript></noscript>

URI 是统一资源标识符,而 URL 是统一资源定位符。因此,笼统地说,每个 URL 都是 URI,但不一定每个 URI 都是 URL。

public class Test {

	public static void main(String[] args) {
		try {
			URL url=new URL("http://www.baidu.com");//指定远程资源的URL
			URLConnection connection=url.openConnection();//获得连接
			InputStream input=url.openStream();//获得远程资源的IO
			StringBuffer buffer=new StringBuffer();
			BufferedReader reader =new BufferedReader(new InputStreamReader(input));
			String str="";
			while((str=reader.readLine())!=null){
				buffer.append(str);//读取远程资源的内容
			}
			System.out.println("连接远程资源的内容:"+buffer.toString());
			System.out.println("连接远程资源的类型:"+connection.getContentType());
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 

4、TCP实现

在java中使用socket(套接字)来完成TCP程序的开发,通过它可以方便的建立可靠、双向、点对点的通信连接。服务器端使用ServerSocket来等待客户端的连接,每一个客户端都需要一个Socket对象来表示。

建立服务器程序:

public class Server {
	public static void main(String[] args) {
		try {
			ServerSocket ss=new ServerSocket(6666);//设置服务器等待客户端连接的端口
			while(true){
				Socket s=ss.accept();
				System.out.println("连接成功");
				InputStream is=s.getInputStream();
				BufferedReader br=new BufferedReader(new InputStreamReader(is));
				System.out.println("Clint("+s.getInetAddress()+"):"+br.readLine());
				}
				br.close();
				s.close();
				ss.close();
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 编写客户端程序:

public class Clint {
public static void main(String[] args) {
	try {
		Socket s=new Socket("127.0.0.1",6666);//建立对服务器端的连接
		OutputStream os=s.getOutputStream();
		BufferedReader sys=new BufferedReader(new InputStreamReader(System.in));//获得用户的输入信息
		String str=sys.readLine();
		PrintWriter pw=new PrintWriter(os);
		while(!str.equals("bye")){//只要用户不输入“bye”,则将用户输入的信息传输到服务器端
		pw.println(str);
		pw.flush();
		str=sys.readLine();
		}
		pw.close();
		sys.close();
		s.close();
	} catch (UnknownHostException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	}
}
}

 

5、UDP实现

在java中通过DatagramSocket和DatagramPacket来完成UDP程序的开发。

编写UDP发生的服务器端程序:

public class UDPServer {
	public static void main(String[] args) {
		byte []b=new byte[1024];
		DatagramPacket dp=new DatagramPacket(b,b.length);//设置发送的数据包长度
		try {
			DatagramSocket ds=new DatagramSocket(5678);//设置服务器端的连接端口
			ds.receive(dp);
			ByteArrayInputStream bais=new ByteArrayInputStream(b);
			DataInputStream dis=new DataInputStream(bais);
			System.out.println(dis.readDouble());
			ds.close();
		} catch (SocketException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 UDP客户端设计:

public class UDPClint {
	public static void main(String[] args) {
		ByteArrayOutputStream baos=new ByteArrayOutputStream();
		DataOutputStream dos=new DataOutputStream(baos);
		
		try {
			dos.writeDouble(5.6);
			byte []b=baos.toByteArray();
			DatagramPacket dp=new DatagramPacket(b,b.length,new InetSocketAddress("127.0.0.1",5678));
			DatagramSocket ds=new DatagramSocket(9999);
			ds.send(dp);
			ds.close();
		} catch (SocketException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 

分享到:
评论

相关推荐

    毕业设计MATLAB_执行一维相同大小矩阵的QR分解.zip

    毕业设计matlab

    ipython-7.9.0.tar.gz

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    debugpy-1.0.0b3-cp37-cp37m-manylinux2010_x86_64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    libaacs-devel-0.10.0-1.mga8.i586.rpm

    rpm -i xx.rpm 只要报错遇到aacs的可以看看架构是否一致

    几个ACM算法pdf.zip

    [ACM国际大学生程序设计竞赛题解].pdf ACM模板-清华大学.pdf ACM算法模板(吉林大学).pdf

    MATLAB设计_计算局部曲率半径,累积弧长和曲率矢量.zip

    毕业设计MATLAB

    毕业设计MATLAB_井字游戏.zip

    毕业设计MATLAB

    libaacs0-0.6.0-1.fc20.x86_64.rpm

    aacs0报错安装 rpm -i xx.rpm 注意架构是否正确

    tmp_19b6232387278d59a1d3d17a373e5c87ee48ea636933c4e400aab98fb353f32d.unknown

    tmp_19b6232387278d59a1d3d17a373e5c87ee48ea636933c4e400aab98fb353f32d.unknown

    2024年软考软件设计师的复习资料

    2024软考软件设计师

    grpcio-1.60.1-cp37-cp37m-manylinux_2_17_aarch64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    毕业设计MATLAB_线性和非线性方程的迭代方法.zip.temp

    毕业设计matlab

    grpcio-1.60.0-cp38-cp38-manylinux_2_17_aarch64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    mysql8.0.11驱动包,兼容支持MySQL 5.5, 5.6, 5.7,8.0各个版本.zip

    mysql8.0.11驱动包,兼容支持MySQL 5.5, 5.6, 5.7,8.0各个版本

    基于vant, vue, axios, vuex的移动端项目开发仿小米商场移动端项目软件源代码.zip

    基于vant, vue, axios, vuex的移动端项目开发,仿小米商场移动端项目软件源代码,较为简单的基于vant, vue, axios, vuex的移动端项目, 仿小米商场移动端项目, 有基本的页面和假数据, 适合作为电商项目的启动模板或者用作学生毕设学习使用。

    grpcio-1.48.2-cp36-cp36m-musllinux_1_1_i686.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    grpcio-1.3.5-cp36-cp36m-manylinux1_i686.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    前端项目《基于Uni-app + Node的音乐听歌系统设计与实现》

    ### 基于 Uni-app + Node 的音乐听歌系统设计与实现 #### 资源概述 本资源提供了一份完整的前端项目设计与实现文档,详细介绍了基于 Uni-app 和 Node.js 构建的音乐听歌系统的设计思路、技术实现和项目源码。该资源包含项目背景、需求分析、系统设计、技术栈选型、核心功能实现、测试与部署等方面的内容,旨在帮助开发者快速掌握 Uni-app 和 Node.js 的开发技巧,打造一个功能完备、体验流畅的音乐听歌平台。 #### 资源内容 1. **项目背景与需求分析**: - 介绍音乐听歌系统的行业背景和用户需求,分析当前市场上音乐应用的特点和痛点。 - 详细描述系统的功能需求,包括用户管理、音乐搜索、播放控制、播放列表管理、用户收藏、音乐推荐等。 2. **系统设计**: - **总体架构设计**:介绍系统的整体架构,包括前端(Uni-app)、后端(Node.js)和数据库(MongoDB)部分,采用前后端分离的开发模式。 - **功能模块设计**:详细描述各个功能模块的设计,包括用户模块、音乐模块、播放模块、推荐模块等。每个

    libaacs-devel-0.11.0-5.el9.ppc64le.rpm

    rpm -i xx.rpm 只要报错遇到aacs的可以看看架构是否一致

    MATLAB设计_对多维数据执行多项式回归.zip

    毕业设计MATLAB

Global site tag (gtag.js) - Google Analytics