`
实学实战
  • 浏览: 15675 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
文章分类
社区版块
存档分类
最新评论

java—网络通信socket的例子

 
阅读更多

Java Socket应用 网络通信 【 socket 】


第一节:网络基础知识
第二节:InetAddress 类:
此类表示互联网协议 (IP) 地址。

InetAddress 的实例包含 IP 地址,还可能包含相应的主机名(取决于它是否用主机名构造或者是否已执行反向主机名解析)。


例子:

package inetaddreaa;

import java.net.InetAddress;
import java.net.UnknownHostException;

public class InetAddressDom {

	public static void main(String[] args) {
		
		try {
			//根据本机 InetAddreaa 获取信息
			InetAddress address = InetAddress.getLocalHost();
			System.out.println("本机名字:" + address.getHostName());
			System.out.println("IP地址:" + address.getHostAddress());
			System.out.println("对象的原始 IP地址:"+address.getAddress());
			//看API文档
			
		} catch (UnknownHostException e) {		
			e.printStackTrace();
		}
	}

}


第三节:URL常用使用方法:
理解:URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。基本URL包含模式(或称协议)、服务器名称(或IP地址)、路径和文件名。
协议为: http (超文本传输协议)。
资源:www.imooc.com

端口:8080

例子:

package url;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;

public class URLDom {
	public static void main(String[] args) {

		try {
			//实例化URL			
			URL url= new URL("http://www.baidu.com");
			//输入流
			InputStream is = url.openStream();
			//将输入流转换为字符流
			InputStreamReader isr = new InputStreamReader(is,"utf-8");
			//为字符流添加缓冲流
			BufferedReader br = new BufferedReader(isr);
			//读取数据
			String date = br.readLine();
			//输出 行
			while( date != null ){
				System.out.println(date);
				date=br.readLine();
			}
			//关闭资源
			br.close();
			isr.close();
			is.close();

		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}


第四节:TCP 编程 【 传输控制协议 】
概念:传输层,以字节流的方式发送数据。

是一种面向连接的、可靠的、基于字节流的传输层通信协议。


服务器端【ServerSocket】
1.创建服务器端,并制定绑定端口。
2.调用 accept() 方法调用 accept() 方法侦听并接受的连接。
3.获取输入流,并读取客户端信息。
4.获取输出流,向客户端端发送信息 。

5.先关闭输入流,关闭资源。


客户端【Socket】
1.创建客户端,制定服务器地址和端口 。
2.获取输出流,向服务器端发送信息 。
3.获取输入流,并读取服务器信息。

4.先关闭输出流,流关闭资源。


TCP 编程之多线程连接:
基本步骤:
1.服务器端创建ServerSocket,循环调用accept() 等待客户端连接。
2.客户端很粗昂贱一个socket并请求和服务器端连接。
3.服务器端接受客户端的请求,创建socket与客户端建立专线连接。
4.建立连接的两个socket在一个单独的线程上对话。

5.服务器端需继续等待新的连接。

例子:


1、服务器端

package tcp;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

	public static void main(String[] args) {
		
		try {
			//1创建服务器,并制定绑定端口
			ServerSocket ss = new ServerSocket(8080);
			//2调用accept()方法侦听并接受的连接。
			System.out.println("***服务器已经启动,等待客户端连接***");
			Socket sk = ss.accept();
			//3获取输入流,获取客户端信息
		    InputStream is = sk.getInputStream();
		    //转换字符流
		    InputStreamReader isr = new InputStreamReader(is);
		    //4为输入流添加缓冲
		    BufferedReader br = new BufferedReader(isr);
		    //输出
		    String io=null;
		    //5获取客户端信息
		    while( (io=br.readLine()) != null){
		    	System.out.println("我是服务器,然后客户端说:" + io);
		    	io=br.readLine();
		    }
		    //关闭输入流
		    sk.shutdownInput();
		    
		    
		    //获取输出流,向客户端发送信息
		    OutputStream ops= sk.getOutputStream();
		    //打印流
		    PrintWriter pw = new PrintWriter(ops);
		    pw.write("您好!欢迎您!");
		    //清空缓冲区数据
		    pw.flush();	
		    
		    //关闭资源
		    ops.close();
		    pw.close();
		    br.close();
		    isr.close();
		    is.close();
		    sk.close();
		    ss.close();
					
		} catch (IOException e) {			
			e.printStackTrace();
		}

	}

}


2、客户端

package tcp;

import java.io.*;
import java.net.*;

//还有一种就是和多线程结合在一起 

public class ServerConter {

	public static void main(String[] args) {
		
		try {
			//创建客户端Socket,指定服务器端口,地址
			Socket sr = new Socket("localhost",8080);
			//获取输出流,向服务器发送信息
		    OutputStream ops = sr.getOutputStream();
			//打印流
		    PrintWriter pw = new PrintWriter(ops);
		    //字符输出流
		    pw.write("用户名:陈郑游;密码:123");		  
		    //清空缓冲区数据
		    pw.flush();
		    //关闭输出流
		    sr.shutdownOutput();
		    
		    //获取输入流,读取服务器的信息
		    InputStream ips = sr.getInputStream();
		    //InputStreamReader isr = new InputStreamReader(ips);
		    BufferedReader buf = new BufferedReader(new InputStreamReader(ips));		    
		    String io=null;
		    //获取客户端信息
		    while( (io=buf.readLine()) != null){
		    	System.out.println("我是客户端,然后服务器说:" + io);
		    	io=buf.readLine();
		    }
		    //关闭资源
		    ips.close();
		    buf.close();
		    pw.close();
		    ops.close();
		    sr.close();
			
		} catch (UnknownHostException e) {			
			e.printStackTrace();
		} catch (IOException e) {		
			e.printStackTrace();
		}

	}

}


第五节:UDP 编程
理解:UDP协议是无连接,不可靠,无序的。
DategramPacket:数据包

DataGrmSocket:进行通信到端口的通信的类


实现步骤:
服务器端:
1,创建DatagramSocket,指定端口号。
2,创建DatagramPacket。
3,接受客户端发送的数据信息。
4,读取客户端数据。

5,关闭资源。

客户端:
1,定义服务器的地址,端口号,数据,发送信息。
2,创建DatagramPacket,包含将要发送的信息。
3,创建DatagramSocket。
4,向服务器端发送数据。

5,关闭资源。


例子:

1、服务器端

package udp;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

public class Server {
    public static void main(String args[]){
    	
    	try {
    		/*接收客户端响应*/   		
    		//1,创建DatagramSocket,指定端口号。
			DatagramSocket socket = new DatagramSocket(8888);
			//2,创建DatagramPacket。
			byte date[] = new byte[1020];
			DatagramPacket packet = new DatagramPacket(date, date.length);
			System.out.println("***服务器已经启动,等待客户端连接***");
			//3,接受客户端发送的数据信息。		
			socket.receive(packet); //接收之前一直堵塞
			//4,读取数据。
			String info = new String(date, 0, packet.getLength());
			System.out.println("我是服务器,客户端说:" + info);
			//
			socket.close();
						
			/*向客户端发送响应*/			
			//1,定义客户端的地址,端口号,数据,发送信息。
			InetAddress iass = packet.getAddress();
			//地址
			int port=8888;  
			byte date2[] ="服务器说:欢迎您!".getBytes();  //转换为字节数组
			//2,创建DatagramPacket,包含将要发送的信息。
			DatagramPacket packet1 = new DatagramPacket(date2, date2.length, iass, port);
			//3,创建DatagramSocket。
			DatagramSocket soc = new DatagramSocket();
			//4,向客户端端发送数据。				
			soc.send(packet1);	
			
				
		} 
    	catch (SocketException e) {			
			e.printStackTrace();
		}
    	catch (IOException e) {				
			e.printStackTrace();
		}		
    }

	
}

2、客户端

package udp;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

public class Socket {

	public static void main(String[] args) {
		
		try {
			/*向服务器端发送响应*/			
			//1,定义服务器的地址,端口号,数据,
			InetAddress inet =InetAddress.getByName("localhost");
			//地址
			int port=8888;  
			byte date1[] ="用户名:小游;密码:888".getBytes();  //转换为字节数组
			//2,创建DatagramPacket,包含将要发送的信息。
		    DatagramPacket packet = new DatagramPacket(date1, date1.length, inet, port);		   		    
		    //3,创建DatagramSocket。
			DatagramSocket socket = new DatagramSocket();
			//4,向服务器端发送数据。				
			socket.send(packet);
							      					
			/*接收服务器端的响应*/			
			byte date2[] = new byte[1020];
			//1,创建DatagramPacket。
			DatagramPacket packet2 = new DatagramPacket(date2, date2.length);
			//2,接受服务器端发送的数据信息。		
			socket.receive(packet2);
			//3,读取数据。
			String info2 = new String(date2, 0, packet2.getLength());
			System.out.println("我是客户端,服务器说:" + info2);
			//4,关闭资源
			socket.close();
			
		    } 
		catch (UnknownHostException e) {
			e.printStackTrace();
		}
		catch (SocketException e) {				
			e.printStackTrace();
		}
	    catch (IOException e) {				
			e.printStackTrace();
		}		  
	}

}



分享到:
评论

相关推荐

    java socket通信例子

    理解并掌握这部分知识对于进行Java网络编程至关重要,特别是当需要开发基于TCP/IP协议的应用时。在实际项目中,可能还需要考虑异常处理、安全通信(如SSL/TLS)、性能优化(如缓冲区大小调整)等更高级的话题。

    JAVA Socket通信示例

    Java Socket通信是网络编程中的基础概念,主要用于实现客户端与服务器之间的双向通信。在这个"JAVA Socket通信示例"中,我们可能会看到如何通过...这将有助于你掌握Java网络编程的基础,并为开发更复杂的应用奠定基础。

    java使用socket网络通信.zip

    Java中的Socket网络通信是基于TCP/IP协议的一种实现进程间通信的方式。这个压缩包包含了一些基本的Java Socket编程示例,包括服务端(Server)和客户端(Client)的代码以及一些辅助图片,如“连接.png”、“服务端....

    有关Java的Socket编程入门例子

    通过这个入门例子,初学者可以理解Java Socket编程的基本原理和操作步骤,为进一步的网络编程打下坚实的基础。实际开发中,还可以结合NIO(非阻塞I/O)或其他高级框架如Netty,提高网络通信的效率和灵活性。

    java socket 客户端和服务端例子

    Java Socket是Java编程语言中用于实现网络通信的一种基础工具,它允许两个应用程序通过TCP/IP协议进行数据交换。在这个"java socket 客户端和服务端例子"中,我们有两个主要组件:服务端(server)和客户端(client...

    Java Socket发送和接收的例子

    Java Socket编程是网络编程的基础,它提供了两台计算机之间的低级别通信接口。在这个例子中,我们将探讨如何使用Java Socket进行数据的发送和接收。Socket在Java中被封装在`java.net.Socket`和`java.net....

    java socket通讯程序源码

    Java Socket通信程序源码是Java网络编程中一个重要的学习领域,它主要用于实现两台计算机之间的数据传输。在Java中,Socket是基于TCP/IP协议的一种低级通信机制,它提供了进程间网络通信的能力。本篇文章将深入探讨...

    java TCP通信的简单例子

    在Java编程中,TCP(传输控制协议)是一种用于网络通信的可靠、面向连接的协议,广泛应用于各种系统间的数据交换。本示例将探讨如何在Java中实现简单的TCP通信,以建立一个通讯录服务作为应用实例。我们将涵盖以下几...

    JAVA Socket 网络编程教程

    Socket,也被称为套接字,是网络通信中的一个重要接口,它为两台计算机提供了一个低级别的、进程到进程的通信机制。在Java中,Socket类位于java.net包下,提供了面向连接的TCP协议的实现。 二、TCP与UDP协议 1. TCP...

    java Socket通信实现

    Java Socket通信实现是Java网络编程中的重要组成部分,它允许两台计算机通过TCP/IP协议进行双向通信。Socket在Java中提供了低级别的、面向连接的、基于流的通信接口,是构建客户端-服务器应用程序的基础。 首先,...

    java 网络及通信

    本篇文章将深入探讨Java中的网络通信机制,包括标准Java接口、Apache HttpClient、Socket通信以及Android平台上的网络接口等内容。 #### 二、标准Java接口 Java标准库提供了`java.net.*`包,该包包含了用于网络...

    基于Java的socket的网络聊天程序

    Java的Socket编程是网络通信的基础,它允许两个网络应用程序之间建立连接并进行数据交换。在本项目中,"基于Java的socket的网络聊天程序"是一个初级程序员使用Java Socket API实现的练习项目,旨在理解并应用网络...

    java socket服务器与客户端的通信实现用户登录

    这个socket通信比较直观,比较容易看懂,实现了Java中的socket的通信问题。是Java网络编程的一个比较不错的例子!

    java 网络编程的例子,可用

    以下将详细阐述Java网络编程的基础概念、核心组件以及如何创建一个简单的Socket通信实例。 1. **Java网络编程基础** Java网络编程是利用Java提供的API来处理网络连接和数据传输的过程。它基于TCP/IP协议栈,可以...

    java网络编程使用的简单例子

    在这个简单的例子中,我们将探讨Java如何实现网络通信,主要包括Socket编程、ServerSocket、URL连接以及输入/输出流的使用。 1. **Socket编程**:Socket是网络通信的基本单元,它提供了进程间的双向通信通道。在...

    最简单的socket通信例子

    Socket是网络通信的基本单元,它提供了进程间通信(IPC)的能力,特别是在网络环境中的进程通信。在Java中,`java.net.Socket`和`java.net.ServerSocket`是进行TCP/IP通信的核心类。 标题中的“最简单的Java Socket...

    JAVA网络通信系统的研究与开发.doc

    JAVA网络通信系统的研究与开发是信息技术领域中的一个重要课题,它涉及到如何使用JAVA语言构建网络通信应用,以便实现在互联网上的信息交互。JAVA网络通信系统通常包括客户端和服务器端的架构,允许用户通过网络进行...

    线程与socket例子.rar_java_layersnut_socket

    线程用于实现并发处理,而Socket则是网络通信的基础。本教程通过具体的示例代码来讲解这两个概念的使用。 首先,我们来看看“线程”(Thread)。线程是程序执行的最小单位,一个进程可以有多个线程,它们共享同一份...

    网络通信socket全面源代码

    在这个名为"网络通信socket全面源代码"的压缩包中,我们可以期待找到一系列关于如何使用Socket进行网络编程的实例。这个资源对初学者和经验丰富的开发者来说都是宝贵的,因为它提供了实际操作的例子,帮助理解网络...

    例10.05 Socket客户端程序.rar_java socket _socket_socket 客户端_socket

    Socket客户端程序是Java编程语言中实现网络通信的基础组件,它基于TCP/IP协议栈,用于创建两个应用程序之间的连接,使得数据可以在它们之间传输。在Java中,`java.net.Socket`类和`java.net.ServerSocket`类是实现...

Global site tag (gtag.js) - Google Analytics