`
朱润泽
  • 浏览: 47408 次
  • 性别: Icon_minigender_1
  • 来自: 江西
社区版块
存档分类
最新评论

网络编程01

    博客分类:
  • java
阅读更多

1、基于http的网络编程

URLURLConnectionHttpURLConnectionJarURLConnection

 

URL 统一资源定位器

创建URL连接用法:

首先要声明一个URL对象,定位资源地址

 1通过在 URL 上调用 openConnection 方法创建连接对象。

 2处理设置参数和一般请求属性。

 3使用 connect 方法建立到远程对象的实际连接。

 4远程对象变为可用。远程对象的头字段和内容变为可访问。

 

 

<!--EndFragment-->

public static void test01(){

     URL url = null;

try {

url = new URL("http://192.168.0.12:8080/mp3/resources.xml");

URLConnection urlc = url.openConnection();

                urlc.connect();

                

                StringBuffer sb = new StringBuffer();

                BufferedReader br = 

          new BufferedReader(new InputStreamReader(urlc.getInputStream()));

                String str = "";

                while((str = br.readLine()) != null){

                 sb.append(str);

                }

                System.out.print(sb.toString());

catch (MalformedURLException e) {

e.printStackTrace();

}catch (IOException e) {

e.printStackTrace();

}

}

 

 

2、基于TCP/IP的网络编程

  客户端Socket的创建和使用方法,Socket选项

  服务器端ServerSocket

Socket在网络编程中的作用是实现客户端和服务器端的通信,他们相互发送的信息都保留在socket的对象当中,服务器端可以通过ServerSocket对象的accept()方法监听客户端,并且可以获得监听到的客户端的socket的对象。由此可以获得客户端发送给服务器的信息。此时客户端正在等待服务器的回应,服务器端的可以吧信息写入到Socket对象当中,供客户端的读取。

 

理解客户端和服务器端中的Socket.getInputStream() Socket.getOutputStream()

以下源代码:

1Client_Socket.java

package socket_01;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.Socket;

public class Client_Socket {

     public static void main(String[] args){

      try{

      //启动客户端

      Socket socket = new Socket("localhost", 12345);

      socket.connect(null);

      //客户端的读入内容

      BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

   //把读入的内容发送给服务器,同时接受服务器回传的数据getInputStream()---- getOutputStream()

      BufferedReader bufferReader = 

new BufferedReader(new InputStreamReader(socket.getInputStream()));

      PrintWriter os = new PrintWriter(socket.getOutputStream());

      String readLine="";

      while((readLine = br.readLine()) != null ){

      System.out.println("client input one time .");

      os.println(readLine);

      os.flush();

      

      String responseline = bufferReader.readLine();

      System.out.println("收到回复:" + responseline);

      }

      bufferReader.close();

      os.close();

      

      socket.close();

      }catch(IOException e){

      e.printStackTrace();

      }

     }

}

2Server_Socket.java

package socket_01;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

public class Server_Socket {

          

public static void main(String[] args){

ServerSocket server = null;

try {

server = new ServerSocket(12345);

System.out.println("启动服务:" + server.getInetAddress().getHostAddress() + ":" + server.getLocalPort());

while(true){

Socket socket = server.accept();

System.out.println("客户端连接:" + socket.getInetAddress().getHostAddress() + ":" + socket.getPort());

BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));

BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));

PrintWriter os = new PrintWriter(socket.getOutputStream());

String line;

while((line = is.readLine()) != null){

System.out.println("收到:" + line);

if(line.equals("bye")){

break;

}

else{

os.println(sin.readLine());

os.flush();

}

}

is.close();

os.close();

socket.close();

}

} catch (Exception e) {

// TODO: handle exception

}finally{

try{

server.close();

}catch(IOException e){

e.printStackTrace();

}

}

}

}

 

 

<!--EndFragment-->

2、基于UDP的网络编程

与之有关的类的有:DatagramPacket    DatagramSocket    MulticastSocket

DatagramPacket需要发送的数据包类,此类对数据进行封装。

DatagramSocket 数据包的套接字,该类对象以数据包为参数,发送和接受数据包。Send方法和receive方法

MulticastSocket 组合 DatagramPacket使用。与DatagramSocket的使用类似。

package udp;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

public class UDPServer {

     public static void main(String[] args){

      try {

      DatagramSocket socket = new DatagramSocket(12345);

      

      byte buf[] = new byte[1000];

      DatagramPacket receivePacket = new DatagramPacket(buf, buf.length);

      System.out.println("开始接受包信息");

      while(true){

      socket.receive(receivePacket);

      String name = receivePacket.getAddress().toString();

      System.out.println("来自主机: " + name + "\n端口" + receivePacket.getPort());

      String s = new String(receivePacket.getData(), 0, receivePacket.getLength());

      System.out.println("接受数据 " + s);

      }

      

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

     }

}

package udp;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

public class UDPClient {

     public static void main(String[] args){

      try {

      DatagramSocket socket = new DatagramSocket();

      

      InetAddress host = InetAddress.getByName("localhost");

      String msg = "hello, i am client !";

      DatagramPacket sendPacket = new DatagramPacket(msg.getBytes(),msg.length(),host,12345);

      socket.send(sendPacket);

      

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

     }

}

服务器端监听是否有数据包到来。相应的方法是socket.receive(receivePacket);当没有数据包到达时,该方法一直处于阻塞状态。

客户端通过socket.send(sendPacket);发送数据包。

<!--EndFragment-->

<!--EndFragment-->
分享到:
评论

相关推荐

    VS.NET网络编程01-03.zip

    【标题】"VS.NET网络编程01-03.zip"是一个关于使用Visual Studio .NET进行网络编程的视频教程,涵盖了从基础到进阶的多个方面。这个压缩包包含的章节分别是chap01.exe、chap02.exe和chap03.exe,它们分别代表了课程...

    windows网络编程01

    windows网络编程01

    Python 网络编程 01_IP地址_端口.mp4

    Python 网络编程 01_IP地址_端口.mp4

    linux C语言 网络编程教程及源码

    1、Linux网络编程01——网络协议入门 2、Linux网络编程02——无连接和面向连接的区别 3、Linux网络编程03——字节序和地址转换 4、Linux网络编程04——套接字 5、Linux网络编程05——C/S与B/S架构的区别 6、Linux...

    linux网络基础和网络编程

    Linux网络基础和网络编程...对于压缩包中的"01_Linux网络编程-网络基础-socket编程-高并发服务器.pdf"文档,可以作为进一步学习和研究的参考资料,它可能详细阐述了这些概念并包含实例代码,有助于读者深化理解和应用。

    IT公司笔试\linux c网络网络编程面试题收集

    Linux C 网络编程面试题收集 本文总结了 Linux C 网络编程面试题,涵盖了基础知识、网络编程、路由等方面的知识点,旨在帮助读者更好地理解和掌握相关知识。 一、基础知识 1. 对于程序 `func(char *str){printf(...

    Linux网络编程c++百度云.txt

    Linux网络编程之TCP/IP基础篇 Linux网络编程之socket编程篇 Linux网络编程之进程间通信篇 Linux网络编程之线程篇 Linux网络编程之TCP/IP基础篇 01TCPIP基础(一) ISO/OSI参考模型 TCP/IP四层模型 基本概念(对等...

    C#网络应用编程(第3版)-PPT课件

    第01章-网络应用编程入门知识;第02章-数字墨迹与动态绘图基础;第03章-进程、线程与应用程序域;第04章-数据流与数据的加密和解密;第05章-异步编程;第06章-并行编程;第07章-WCF入门;第08章-WCF和HTTP应用编程;...

    01、FreeRTOS网络编程.zip

    本文将详细探讨如何在FreeRTOS中进行网络编程,特别是TCP协议的使用,基于最新的FreeRTOS V10.3.1版本。 FreeRTOS的网络支持主要依赖于它的任务调度和信号量管理等内核服务,以及第三方网络栈,如lwIP或FreeRTOS+...

    网络通信编程1-基本连接

    在“network01”这个压缩包中,可能包含了实现基本网络连接的示例代码或教程资源。这些资源可能会讲解如何创建服务器端的监听套接字,如何处理客户端的连接请求,以及如何在客户端和服务器之间传递数据。例如,可能...

    java网络编程.zip

    首先,01-Java语言基础.ppt这部分内容将引导学习者回顾或建立Java编程的基础,包括语法、类、对象、异常处理等核心概念,这是学习网络编程的基石。理解这些基础知识,能帮助开发者编写出稳定、可维护的网络程序。 ...

    Linux网络编程 视频 教程

    Linux网络编程(总共41集) 讲解Linux网络编程知识,分以下四个篇章。 Linux网络编程之TCP/IP基础篇 Linux网络编程之socket编程篇 Linux网络编程之进程间通信篇 Linux网络编程之线程篇 Linux网络编程之TCP/IP...

    网络编程学习心得与体会实践

    根据提供的标题、描述、标签及部分内容,我们可以提炼出关于网络编程的一些关键知识点,尤其是在Java环境下的应用。以下是对这些知识点的详细阐述: ### 一、网络编程概述 #### 1.1 概述 网络编程是指利用计算机...

    Python网络编程实战.zip

    本资源"Python网络编程实战.zip"包含一个名为"Python网络编程实战.mp4"的视频教程,旨在帮助开发者深入理解并掌握Python在网络编程方面的应用。 Python作为一种高级、解释型、交互式和面向对象的脚本语言,因其简洁...

    笔记_UNIX环境网络编程卷二进程间通信_中文第二版.pdf

    笔记_UNIX环境网络编程卷二进程间通信_中文第二版

    Windows网络编程技术.源代码

    1. **Chapter01**:通常涵盖网络编程基础知识,如TCP/IP协议族,套接字(Socket)概念,以及如何在Windows平台上创建和初始化套接字。 2. **Chapter03**:可能深入讲解TCP连接的建立与断开,包括三次握手和四次挥手...

    C#网络编程源文件和讲解(1)

    在"chap01"中,我们可能会看到关于基础网络编程概念的介绍,例如TCP(传输控制协议)和UDP(用户数据报协议)的区别。TCP是面向连接的协议,提供可靠的数据传输,而UDP则是无连接的,更注重速度但不保证数据顺序和...

    VB.NET网络编程指南

    《VB.NET网络编程指南》是一本深入探讨VB.NET在构建网络应用程序方面的教程。该教程针对初学者和有一定基础的开发者,旨在帮助他们掌握利用VB.NET进行网络编程的关键技术和实践方法。教程结合实例源代码,提供了丰富...

    《vc#网络编程技术与实践》多媒体文件第一部分

    通过 chap01.exe、chap03.exe 和 chap02.exe 这三个执行文件,读者可以逐步学习并实践这些理论知识,从而掌握C#环境下的网络编程技能。每个文件可能包含了章节的课件、代码示例或者交互式练习,以增强理解和动手能力...

Global site tag (gtag.js) - Google Analytics