java网络编程

来源:互联网 发布:淘宝女童鞋品牌大全 编辑:程序博客网 时间:2024/05/01 22:01

获取本机的InetAddress实例的三种方法:

1. InetAddress address = InetAddress.getLocalHost();2. InetAddress address = InetAddress.getByName("lh");//参数为电脑用户名3. InetAddress address = InetAddress.getByName("1.1.1.10"); //参数为自己电脑的IP 

基于TCP的Socket编程

服务器端:

1. 创建ServerSocket对象,绑定监听端口

2. 通过accept()方法监听客户端请求

3. 连接建立后,通过输入流读取客户端发送的请求信息

4. 通过输出流向客户端发送响应信息

5. 关闭相关资源

//1、创建一个服务器端Socket,即ServerSocket,指定绑定端口,并监听该端口ServerSocket serverSocket = new ServerSocket(8888);//2、调用accept()方法开始监听,等待客户端的连接Socket socket = serverSocket.accept();//3、获取输入流,并读取客户端信息InputStream is = socket.getInputStream();//字节输入流InputStreamReader isr = new InputStreamReader(is);//为了提高传输效率,将字节流包装为字符流BufferedReader br = new BufferdReader(isr);//为输入流添加缓冲String info = null;while((info = br.readLine()) != null)//循环读取客户端的信息{    //写自己的代码}socket.shutdownInput();//调用java方法关闭输入流//4、获取输出流,响应客户端的请求OutputStream os = socket.getOutputStream();PrintWriter pw = new PrinterWriter(os);//包装为打印流pw.flush();//调用flush()方法将缓冲输出//5、关闭资源pw.close();os.close();br.close();isr.close();is.close();socket.close();serverSockt.close();

客户端:

1. 创建Socket对象,指明需要连接的服务器的地址和端口号

2. 连接建立后,通过输出流向服务器端发送请求信息

3. 通过输入流获取服务器响应的信息

4. 关闭相关资源

下面以从客户端向服务器端发送登录请求登录为例(服务器端必须早与客户端启动)

//1.创建客户端,指定服务器地址和端口Socket socket = new Socket("1.1.1.10", 8888);//参数为实际需要中的IP和端口号//2.获取输出流,向服务器发送信息OutputStream os = socket.getOutputStream();//字节输出流PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流pw.write("用户名:admin; 密码:123");pw.flush();//刷新,输出信息socket.shutdownOutput();//关闭输出流//3.获取输入流,并读取服务器端的响应信息InputStream is = socket.getInputStream();BufferedReader br = new BufferedReader(new InputStreamReader(is);
String info = null;while((info = br.readLine()) != null)//循环读取客户端的信息{    System.out.println("我是客户端,服务器端说:"+info);    //写自己的代码}

//4.关闭资源
br.close();
is.close();
pw.close();
os.close();
socket.close();





如何实现服务器与多客户端之间的通信?

基本步骤

1.服务器创建ServerSocket,循环调用accept()方法等待客户端的连接

2.客户端创建一个socket并请求和服务器端连接

3.服务器端接受客户端请求,创建socket与该客户建立专线连接

4.建立连接的两个socket在一个单独的线程上对话

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

Socket socket = null;while(true){    socket = severSocket.accept();    ServerThread severThread = new SeverThread(socket);    severThread.start();}ServerThread类public class SeverThread extends Thread(    Socket socket = null;        public SeverThread(Socket socket)    {        this.socket = socket;     }    //线程执行的操作,响应客户端的请求    public void run{        //    }


基于UDP的socket编程

     UDP协议进行数据传输时,首先需要将要传输的数据定义成数据报(Datagram),在数据报中指明数据所要达到的Socket(主机地址和端口号),然后再将数据报发送出去。

     相关操作类

     DatagramPacket:表示数据报包

    DatagramSocket:进行端到端通信的类


服务器端实现步骤

1.创建DatagramSocket,指定端口号

2.创建DatagramPacket

3.接收客户端发送的数据信息

4.读取数据

/**接收客户端发送的数据*///1.创建服务器端DatagramSocket,指定端口DatagramSocket socket = new DatagramSocket(8800);//2.创建数据报,用于接收客户端发送的数据byte[] data = new byte[1024];//创建字节数据,指定接收的数据包大小DatagramPacket packet = new DatagramPacket(data,data.length);//3.接收客户端发送的数据socket.receive(packet);//此方法在接收到数据报之前会一直阻塞//4.读取数据String info = new String(data, 0, packet.getLength());System.out.println("我是服务器,客户端说:"+info);/**向客户端响应数据*///1.定义客户端的地址、端口号、数据InetAddress address = packet.getAddress();int port = packet.getPort();bate[] data2 = "欢迎你!".getBytes();//2.创建数据报,包含响应的数据信息DatagramPacket packet2 = new DatagramPacket(data2, data2.length, address, port);//3.响应客户端socket.send(packet2);//4.关闭资源socket.close();


客户端实现步骤

1.定义发送信息

2.创建DatagramPacket,包含将要发送的信息

3.创建DatagramSocket

4.发送数据

/**向服务器端发送数据*///1.定义服务器的地址、端口号、数据InetAddress address = InetAddress.getByName("localhost");int port = 8800;byte data = "用户名:admin;密码:123".getBytes();//2.创建数据报,包含发送的数据信息DatagramPacket packet = new DatagramPacket(data,data.length,address,port);//3.创建DatagramSocket对象DatagramSocket socket = new DatagramSocket();//4.向服务器端发送数据报socket.send(packet);/**接收服务器端响应的数据*///1.创建数据报,用于接收服务器端响应的数据byte data2 = new byte[1024];DatagramPacket packet2 = new DatagramPacket(data2,data2.length);//2.接收服务器响应的数据socket.receive(packet2);//3.读取数据String reply = new String(data2, 0, packet2.getlength());System.out.println("我是客户端,服务器说:"+reply);//4.关闭资源socket.close();

网页制作中的锚点

       我们在做一个很长的网页时,需要在页面内做一个导航,点击导航里的链接不是新开一个窗口或者跳转到其他网址,而是跳转到当前页的某一个位置。那么所要跳转到的那个位置,我们就叫做锚点,它是一种在页面内部定位的方式。

      设置锚点也是很简单的,例如一个文章分了三段,每段有个标题,标题的代码是这样的
<h2>我是标题一</h2>
<h2>我是标题二</h2>
<h2>我是标题三</h2>

如果我想要在页面内设置锚点,做一个索引,点击相应的索引标题就跳转到相应的段落,那么就只要在标题所在的html标签里面设置一个ID,然后链接过去即可,可以像下面这样设置ID:
<h2 id="a">我是标题一</h2>
<h2 id="b">我是标题二</h2>
<h2 id="c">我是标题三</h2>

然后在索引里面这样设置超链接就可以实现和锚点的连接了
<a href="#a">点击我就会跳到第一段</a>
<a href="#b">点击我就会跳到第二段</a>

<a href="#c">点击我就会跳到第三段</a>



0 0