Java中的网络编程

​  Java中的网路编程主要是Java的Socket编程,属于JavaEE中的高级的部分,以下内容是对java网路编程的一个小结,代码都是经过编译调试的

  C/S程序应用:客户/服务器模式,如QQ客户端,客户端连到服务器上,一个C/S模式的应用必须有两套程序,一个是客户端的程序,一个是服务器程序。

  B/S程序应用:浏览器/服务器模式,如当下的各种网站都是B/S模式,所有的程序代码都在服务器上,用户通过浏览器去访问。

C/S程序分为两种:

        基于TCP协议:Socket(套接字), 可靠的编程: A->B 如打电话先建立连接

        基于UDP协议:不可靠,如短信功能。

如果编写一个TCP程序需要JAVA的两个包支持:

        java.net.*: 主要提供网络支持;

                |-ServerSocket类:服务器端程序

                |-Socket类:客户端程序

        java,io.*:传递信息流

客户端的两个功能:

    1.建立Socket

    2.接收输入的命令(输入流)->网络上传输的程序考的是字节流

以下是服务器端,客户端的两个事例程序,服务器端想客户端输出Hello word, 客户端接收并显示;

服务器程序:

 1 import java.io.*;
 2 import java.net.*;
 3 public class TCPSever {
 4  
 5     /**
 6      * @param args
 7      * @throws IOException
 8      */
 9     public static void main(String[] args) throws IOException {
10         // TODO Auto-generated method stub
11         //使用ServerSocket
12         ServerSocket server = new ServerSocket(8000);
13  
14         //每个用户在程序中就是一个Socket
15         Socket client = null;
16  
17         //等待客户端连接
18         client = server.accept();
19  
20         //像客户端打印信息
21         PrintWriter out = null;
22  
23         //准被向客户端打印信息
24         out = new PrintWriter(client.getOutputStream());
25         out.println("Hello World");
26         out.close();
27         client.close();
28         server.close();
29     }
30  
31 }

客户端程序:

 1 package Client;
 2 import java.io.*;
 3 import java.net.*;
 4  
 5 public class TCPClient {
 6  
 7     /**
 8      * @param args
 9      * @throws IOException
10      * @throws UnknownHostException
11      */
12     public static void main(String[] args) throws UnknownHostException, IOException {
13         // TODO Auto-generated method stub
14         //表示一个客户端的Socket
15         Socket client = null;
16  
17         //表示一个客户端的输入信息
18         BufferedReader  buf = null;
19         client = new Socket("localhost",8000);
20         buf = new BufferedReader(new InputStreamReader(client.getInputStream()));
21         System.out.println(buf.readLine());
22         buf.close();
23         client.close();
24  
25     }
26  
27 }

在JDK中也准备了两个专门用于实现UDP的类

        1.DatagramScoket

        2.DatagramPacket

服务器端程序:

package Client;
import java.io.*;
import java.net.*;
 
public class TCPClient {
 
    /**
     * @param args
     * @throws IOException
     * @throws UnknownHostException
     */
    public static void main(String[] args) throws UnknownHostException, IOException {
        // TODO Auto-generated method stub
        //表示一个客户端的Socket
        Socket client = null;
 
        //表示一个客户端的输入信息
        BufferedReader  buf = null;
        client = new Socket("localhost",8000);
        buf = new BufferedReader(new InputStreamReader(client.getInputStream()));
        System.out.println(buf.readLine());
        buf.close();
        client.close();
 
    }
 
}

  客户端程序:

 1 package Test4;
 2 import java.io.*;
 3 import java.net.*;
 4 public class UDPClient {
 5  
 6     /**
 7      * @param args
 8      * @throws IOException
 9      */
10     public static void main(String[] args) throws IOException {
11         // TODO Auto-generated method stub
12         DatagramSocket ds = null;
13         DatagramPacket dp = null;
14  
15         byte[] b = new byte[1024];
16  
17         ds = new DatagramSocket(8000);
18         dp = new DatagramPacket(b,b.length);
19         ds.receive(dp);
20         String str = new String(dp.getData(),0,dp.getLength());
21         System.out.println(str);
22     }
23  
24 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏崔庆才的专栏

腾讯云上 Winpcap 网络编程四之主机通信

由于腾讯云上提供了Windows系统,所以我们这次Winpcap编程选用腾讯云主机实验,让大家简要了解两台云主机的通信方法以及实践过程。

59200
来自专栏MasiMaro 的技术博文

Vista 及后续版本的新线程池

在上一篇的博文中,说了下老版本的线程池,在Vista之后,微软重新设计了一套线程池机制,并引入一组新的线程池API,新版线程池相对于老版本的来说,它的可控性更高...

17030
来自专栏向前进

【笔记】HybridApp中使用Promise化的JS-Bridge

背景: HybridApp,前端采用JS-bridge的方式调用Native的接口,如获取设备信息、拍照、人脸识别等 前端封装了调用库,每次调用Native接口...

35740
来自专栏逆向技术

常见注入手法第四讲,SetWindowsHookEx全局钩子注入.以及注入QQ32位实战.

钩子回调根据SetWindowsHookEx参数1来设定的.比如如果我们设置WH_CBT 那么我们设置的回调函数就是CBT回调. 具体查询MSDN

2.5K30
来自专栏Spark学习技巧

Hbase源码系列之BufferedMutator的Demo和源码解析

一,基本介绍 BufferedMutator主要用来异步批量的将数据写入一个hbase表,就像Htable一样。通过Connection获取一个实例。Map/r...

1.4K100
来自专栏Java编程技术

使用数据库悲观锁实现不可重入的分布式锁

在同一个jvm进程中时,可以使用JUC提供的一些锁来解决多个线程竞争同一个共享资源时候的线程安全问题,但是当多个不同机器上的不同jvm进程共同竞争同一个共享资源...

8310
来自专栏公众号_薛勤的博客

深入理解[Master-Worker模式]原理与技术

Master-Worker模式是常用的并行模式之一。它的核心思想是,系统由两类进程协作工作:Master进程和Worker进程。Master进程负责接收和分配任...

26350
来自专栏分布式系统进阶

Kafka集群Metadata管理Kafka源码分析-汇总

可以看到是调用了ReplicaManager.maybeUpdateMetadataCache方法, 里面又会调用到MetadataCache.updateCa...

30220
来自专栏Jed的技术阶梯

Kafka 消费者旧版低级 API

Kafka 消费者总共有 3 种 API,新版 API、旧版高级 API、旧版低级 API,新版 API 是在 kafka 0.9 版本后增加的,推荐使用新版 ...

26630
来自专栏我的小碗汤

自动评论csdn博客文章实现

今天我们来用java代码爬取csdn博客网站,然后自动评论,这一波操作可以说是相当风骚了,话不多说,咱上代码。

21820

扫码关注云+社区

领取腾讯云代金券