Java网络编程学习笔记

1.Java Socket(套接字)编程提供了在不同计算设备之间共享数据的功能。

  1. IP地址:IP地址是分配给网络节点(例如192.168.0.1)的唯一编号。它由0到255之间的八位字节组成。
  2. 协议:TCP、FTP、
  3. 端口号:端口号用于唯一标识不同的应用程序。它充当应用程序之间的通信端点。
  4. MAC地址:MAC(介质访问控制)地址是NIC(网络接口控制器)的唯一标识符。一个网络节点可以有多个NIC,但是每个都有唯一的MAC地址。
  5. 面向连接和无连接协议:在面向连接的协议中,确认是由接收方发送的。因此,它是可靠的但很慢。面向连接协议的一种实现是TCP协议。在无连接协议中,接收方不会发送确认。因此它不可靠,但速度很快。无连接协议的一种实现是UDP协议。
  6. Socket:Socket(套接字)是双向通信之间的端点。

Socket编程中的客户端必须知道两个信息:

  • 服务短的IP地址
  • 服务端端口号

要完成Socket编程,我们需要使用两个类:Socket和ServerSocket。

Socket类:用于通信客户端和服务器。通过此类,我们可以读写消息。

ServerSocket类:在服务器端使用。ServerSocket类的accept() 方法将阻止控制台,直到客户端连接为止。客户端成功连接后,它将在服务器端返回Socket的实例。

0

/**
 *  Java Socket编程(服务端)
 */
import java.net.*;
import java.io.*;

class MyServer{

    public static void main(String args[])throws Exception{
        ServerSocket ss=new ServerSocket(3333);
        Socket s=ss.accept();
        DataInputStream din=new DataInputStream(s.getInputStream());
        DataOutputStream dout=new DataOutputStream(s.getOutputStream());
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        String str="",str2="";
        while(!str.equals("stop")){
            str=din.readUTF();
            System.out.println("client says: "+str);
            str2=br.readLine();
            dout.writeUTF(str2);
            dout.flush();
        }
        din.close();
        s.close();
        ss.close();
    }
}
/**
 *  Java Socket编程(客户端)
 */
import java.net.*;
import java.io.*;

public class MyClient{

    public static void main(String args[])throws Exception{
        Socket s=new Socket("localhost",3333);
        DataInputStream din=new DataInputStream(s.getInputStream());
        DataOutputStream dout=new DataOutputStream(s.getOutputStream());
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

        String str="",str2="";
        while(!str.equals("stop")){
            str=br.readLine();
            dout.writeUTF(str);
            dout.flush();
            str2=din.readUTF();
            System.out.println("Server says: "+str2);
        }

        dout.close();
        s.close();
    }
}

java.net.URL类提供了许多方法。URL类的重要方法如下:

方法

描述

public String getProtocol()

返回URL的协议。

public String getHost()

返回URL的主机名。

public String getPort()

返回URL的端口号。

public String getFile()

返回URL的文件名。

public String getAuthority()

返回URL的权限。

public String toString()

返回URL的字符串表示形式。

public String getQuery()

返回URL的查询字符串。

public String getDefaultPort()

返回URL的默认端口。

public URLConnection openConnection()

返回URLConnection的实例,即与此URL关联的实例。

public boolean equals(Object obj)

将URL与给定的对象进行比较。

public Object getContent()

返回URL的内容。

public String getRef()

返回URL的锚点或引用。

public URI toURI()

返回URL的URI。

Java URLConnection类提供了许多方法,我们可以使用getInputStream() 方法显示网页的所有数据。getInputStream() 方法返回流中可以读取和显示的指定URL的所有数据。

​
package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
/**
 *  Java URLConnection的例子
 */
import java.io.*;
import java.net.*;
public class Demo {
    public static void main(String[] args){
        try{
            URL url=new URL("http://www.yiidian.com/java");
            URLConnection urlcon=url.openConnection();
            InputStream stream=urlcon.getInputStream();
            int i;
            while((i=stream.read())!=-1){
                System.out.print((char)i);
            }
        }catch(Exception e){
            System.out.println(e);
        }
    }
}

​

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
嗨!很高兴回答你关于Java并发编程的问题。请问你想知道什么方面的内容呢?我可以分享一些学习笔记和建议给你。 1. 并发编程基础:了解并发编程的基本概念,如线程、进程、锁、同步等。学习Java中的并发编程模型以及相关的API,如Thread、Runnable、Lock、Condition等。 2. 线程安全性:学习如何保证多线程环境下的数据安全性,了解共享资源的问题以及如何使用同步机制来防止数据竞争和并发问题。 3. 线程间的通信:掌握线程间的通信方式,如使用wait/notify机制、Lock/Condition等来实现线程的协调与通信。 4. 并发容器:学习并发容器的使用,如ConcurrentHashMap、ConcurrentLinkedQueue等。了解它们的实现原理以及在多线程环境下的性能特点。 5. 并发工具类:熟悉Java提供的并发工具类,如CountDownLatch、CyclicBarrier、Semaphore等,它们可以帮助你更方便地实现线程间的协作。 6. 并发编程模式:学习一些常见的并发编程模式,如生产者-消费者模式、读者-写者模式、线程池模式等。了解这些模式的应用场景和实现方式。 7. 性能优化与调试:学习如何分析和调试多线程程序的性能问题,了解一些性能优化的技巧和工具,如使用线程池、减少锁竞争、避免死锁等。 这些只是一些基本的学习笔记和建议,Java并发编程是一个庞大而复杂的领域,需要不断的实践和深入学习才能掌握。希望对你有所帮助!如果你有更具体的问题,欢迎继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值