`

java网络编程小结1

阅读更多

1 基本的tcp网络编程模式
   首先是server端,server端用的是serversocket,

 

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

public class TCPServer {
 public static void main(String[] args) throws Exception {
  ServerSocket ss = new ServerSocket(6666);
  while(true) {

       Socket s=ss.accept();

        DataInputStream dis=new DataInputStream(s.getInputStream());  

      System.out.println(dis.readUTF());
   dis.close();
   s.close();
  }
 }
}

 

   客户端
   

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

public class TCPClient {
 public static void main(String[] args) throws Exception {
  Socket s = new Socket("127.0.0.1", 6666);
  OutputStream os = s.getOutputStream();
  DataOutputStream dos = new DataOutputStream(os);
  Thread.sleep(30000);
  dos.writeUTF("hello server!");
  dos.flush();
  dos.close();
  s.close();
 }
}

  对客户端来说,是output输出流到服务端.

 

2 下面的程序,可以通过服务端把客户端的ip端口等输出给客户端
   

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

public class TestServer {
 public static void main(String args[]) {
  try {  
   ServerSocket s = new ServerSocket(8888);
   while (true) {
    Socket s1 = s.accept();
    OutputStream os = s1.getOutputStream();
    DataOutputStream dos = new DataOutputStream(os);
    dos.writeUTF("Hello," + s1.getInetAddress() +
      "port#" +s1.getPort() + "  bye-bye!");
    dos.close();
    s1.close();
   }
  }catch (IOException e) {
   e.printStackTrace();
   System.out.println("程序运行出错:" + e);   
  }
 }
}

 

客户端,则把服务端输进来的信息显示
  

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

public class TestClient {
 public static void main(String args[]) {
  try {
   Socket s1 = new Socket("127.0.0.1", 8888);
   InputStream is = s1.getInputStream();
   DataInputStream dis = new DataInputStream(is);
   System.out.println(dis.readUTF());
   dis.close();
   s1.close();
  } catch (ConnectException connExc) {
   connExc.printStackTrace();
   System.err.println("服务器连接失败!");
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}

 

 

3 下面的TCP则是客户跟服务端各自发送一句话给对方.
  服务端:
   import java.io.*;
import java.net.*;
public class TestSockServer {
  public static void main(String[] args) {
    InputStream in = null;
    OutputStream out = null;
    try {
      ServerSocket ss = new ServerSocket(5888);
      Socket socket = ss.accept();
      in = socket.getInputStream();
      out = socket.getOutputStream();
      DataOutputStream dos = new DataOutputStream(out);
      DataInputStream dis = new DataInputStream(in);
      String s = null;
      if((s=dis.readUTF())!=null) {
       System.out.println(s);
       System.out.println("from: "+socket.getInetAddress());
       System.out.println("Port: "+socket.getPort());
     }
      dos.writeUTF("hi,hello");
      dis.close();
      dos.close();
      socket.close();
    } catch (IOException e) {e.printStackTrace();}
  }
}

   客户端:
   import java.net.*;
import java.io.*;
public class TestSockClient {
  public static void main(String[] args) {
    InputStream is = null; OutputStream os = null;
    try {
      Socket socket = new Socket("localhost",5888);
      is = socket.getInputStream();
      os = socket.getOutputStream();
      DataInputStream dis = new DataInputStream(is);
      DataOutputStream dos = new DataOutputStream(os);
      dos.writeUTF("hey");
      String s = null;
      if((s=dis.readUTF())!=null);
       System.out.println(s);
      dos.close();
      dis.close();
      socket.close();
    } catch (UnknownHostException e) {
       e.printStackTrace();
    } catch (IOException e) {e.printStackTrace();}
  }
}

5 UDP中,注意datagrampacket的应用,下面的是客户端发一消息给服务端的
   public class TestUDPClient
{
 public static void main(String args[]) throws Exception
 {
  byte[] buf = (new String("Hello")).getBytes();

  Datagrampacket dp=new DatagramPacket(buf, buf.length,
              new InetSocketAddress("127.0.0.1", 5678)
              );
  DatagramSocket ds = new DatagramSocket(9999);
  ds.send(dp);
  ds.close();
 }

  服务端:
   

import java.net.*;

public class TestUDPServer
{
 public static void main(String args[]) throws Exception
 {
  byte buf[] = new byte[1024];
  DatagramPacket dp = new DatagramPacket(buf, buf.length);
  DatagramSocket ds = new DatagramSocket(5678);
  while(true)
  {
   ds.receive(dp);
   System.out.println(new String(buf,0,dp.getLength()));
  }
 }
}

  

  要注意的知识点是,如果是客户端的其他类型的数据,在转换时要注意,比如下面的例子传一个长整型的到服务端:
客户端:
  public class TestUDPClient
{
 public static void main(String args[]) throws Exception
 {
  long n = 10000L;
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  DataOutputStream dos = new DataOutputStream(baos);
  dos.writeLong(n);
  
  byte[] buf = baos.toByteArray();
System.out.println(buf.length);
  
  DatagramPacket dp = new DatagramPacket(buf, buf.length,
              new InetSocketAddress("127.0.0.1", 5678)
              );
  DatagramSocket ds = new DatagramSocket(9999);
  ds.send(dp);
  ds.close();
  
 }
}

服务端:
  

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

public class TestUDPServer
{
 public static void main(String args[]) throws Exception
 {
  byte buf[] = new byte[1024];
  DatagramPacket dp = new DatagramPacket(buf, buf.length);
  DatagramSocket ds = new DatagramSocket(5678);
  while(true)
  {
   ds.receive(dp);
   ByteArrayInputStream bais = new ByteArrayInputStream(buf);
   DataInputStream dis = new DataInputStream(bais);
   System.out.println(dis.readLong());
  }
 }
}


   
   

分享到:
评论

相关推荐

    java网络编程总结

    在Java网络编程中,我们还需要了解异常处理、套接字选项、多路复用技术如Java NIO(非阻塞I/O)以及SSL/TLS安全通信等高级主题。此外,对于B/S架构,我们通常使用Servlet、JSP和相关框架(如Spring MVC)来开发Web...

    Java网络编程总结

    Java网络编程是软件开发中的重要组成部分,特别是在分布式系统和互联网应用中不可或缺。本文将深入探讨Java网络编程的核心概念、关键技术和实用技巧。 首先,我们来理解Java中的Socket编程。Socket在计算机网络中...

    java网络编程详解(牛人总结)

    Java网络编程是编程领域中的重要组成部分,它允许程序在不同的设备之间交换信息。本文将深入讲解Java中的网络编程基础知识,帮助初学者理解并掌握这一技术。 首先,理解网络编程的本质至关重要。网络编程涉及两个或...

    Java网络编程资料

    总结起来,这份资料包涵盖了Java网络编程的核心部分:基础的Socket编程,深入的TCP协议理解,以及高级的事务管理机制。通过学习这些内容,开发者能够熟练地构建和优化网络应用程序,处理并发和数据传输问题,同时...

    Java 网络编程实验报告 含实验总结

    Java网络编程是计算机科学中的一个重要领域,特别是在分布式系统和服务器端开发中不可或缺。这个实验报告主要涉及了两个关键概念:I/O操作和线程管理,同时包含了一个基本的聊天室代码实现,这为我们提供了理解Java...

    Java网络编程-JavaSocket编程总结

    Java网络编程是构建分布式应用程序的关键技术,而Java Socket编程则是其核心部分,允许两台计算机通过网络进行双向通信。在Java中,Socket是基于TCP/IP协议的,提供了可靠的、面向连接的数据传输服务。 首先,理解...

    java网络编程基础

    总结来说,这个"java网络编程基础"示例涵盖了如何创建基本的服务器和客户端应用程序,以及如何通过TCP连接进行数据交换。通过分析和学习这两个文件,初学者可以了解Java网络编程的基本概念,为进一步的网络应用开发...

    Java网络编程与分布式计算.pdf

    总结来说,Java网络编程和分布式计算是构建现代网络应用的基础技术,它们允许开发者创建出可以协同工作的网络应用程序,并将这些程序部署在分布式环境中。掌握这些技术,能够使程序员充分利用Java语言的跨平台优势,...

    Java网络编程与分布式计算

    总结来说,Java网络编程与分布式计算涉及的内容广泛,包括网络通信的基本原理,Java提供的相关API,以及分布式系统的设计和实现。掌握这些知识,对于成为专业的Java开发人员,尤其是从事云计算和大数据领域的开发者...

    java网络编程精讲

    ### Java网络编程精讲知识点概览 #### 一、Java网络编程基础 1. **网络编程概念**: - 网络编程是指利用计算机网络技术进行数据交换和资源共享的一种编程方式。 - Java提供了强大的网络编程支持,使得开发者能够...

    java网络编程聊天程序报告

    总结,本Java网络编程聊天程序报告详细阐述了一个基于Java的聊天程序的设计与实现,涵盖了系统的需求分析、功能设计、特点、架构以及权限管理等方面。这样的系统为用户提供了一个安全、高效的在线交流平台,充分体现...

    Java网络编程 五子棋 课程设计

    这个项目涵盖了多个关键知识点,包括Java编程语言、网络通信协议、多线程、游戏逻辑算法以及用户界面设计。 首先,Java编程语言是实现该项目的基础,它是一种面向对象的语言,具有丰富的类库和强大的跨平台能力,...

    Java网络高级编程

    《Java网络高级编程》是一本专注于Java网络编程的教材,涵盖了从基础到高级的各种网络编程技术和概念。根据描述,本书共分为11章,每一章都详细介绍了网络编程中的不同知识点。以下是对本书内容的详细介绍: 在第1...

    java实验7 网络编程

    Java 网络编程实验 本实验主要涉及Java 网络编程的基础知识,包括使用InetAddress类获取主机的IP地址和主机名称,使用Socket和ServerSocket类实现C/S通信。 一、 InetAddress类 InetAddress类是Java中用于表示...

    java网络编程客户端和服务端

    总结一下,本教程主要介绍了Java网络编程的基础知识,包括使用`ServerSocket`创建服务器,`Socket`建立客户端连接,以及如何通过输入输出流进行数据交换。同时,也提到了使用Swing创建简单GUI的方法。继续深入实践,...

    java网络编程代码

    总结来说,Java网络编程包括了对UDP和TCP协议的支持,通过Socket API可以实现客户端和服务器之间的通信。无论是简单聊天软件还是复杂的分布式系统,理解并熟练掌握这些基础知识都是至关重要的。

    JAVA网络编程:端口扫描器

    总结来说,Java网络编程中的端口扫描器通过Socket类实现了对目标IP的端口探测,结合多线程技术提高了扫描效率。然而,使用此类工具时,我们必须意识到可能涉及的法律和道德问题,合理合法地使用这些技术。

    Java网络高级编程4.pdf

    根据提供的文件信息,“Java网络高级编程4.pdf”主要聚焦于Java网络编程的高级技术与实践。虽然提供的部分内容并未包含实际的技术细节,但从标题、描述以及标签来看,我们可以合理推测这本书涵盖了Java在网络编程...

Global site tag (gtag.js) - Google Analytics