[2014-11-21]Java笔记_Java网络编程、TCP、UDP

一、简介

· 端口:IP 地址用来标识网络上的计算机,而端口号用来指明该计算机上的应用程序。

· URL(Uniform Resource Locator):统一资源定位符。它表示 Internet 上某一资源的地址。

package com.bob.network;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;

public class UrlTest1 {
	public static void main(String[] args) throws Exception {
		URL url = new URL("http://www.baidu.com");
		URLConnection conn = url.openConnection();	//获得URLConnection对象
		
		InputStream is = conn.getInputStream();		//从URLConnection转向I/O
		FileOutputStream fos = new FileOutputStream(new File("C:/test.txt"));
		
//		InputStream is = url.openStream();	//这行代码等价于上面两行代码
		
		byte[] buffer = new byte[2048];
		
		int length;
		while(-1 != (length = is.read(buffer, 0, buffer.length))){
			fos.write(buffer, 0, length);
		}
		
		is.close();
		fos.close();
		
	}
}

二、TCP/IP 的套接字(Socket)

   ·什么是Socket:Socket是连接运行在网络上的两个程序间的双向通讯的端点。

总结: 1) 建立Socket 连接; 2)获得输入/输出流; 3)读/写数据;4)关闭输入/输出流;5)关闭Socket。

package com.bob.network;

import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TcpServer {
	public static void main(String[] args) throws Exception  {
		ServerSocket ss = new ServerSocket(7777);
		Socket socket = ss.accept();	//等待客户端连接成功后继续往下执行

		InputStream is = socket.getInputStream();
		
		byte[] buffer = new byte[200];
		int length = is.read(buffer);
		System.out.println(new String(buffer, 0, length));
		
		OutputStream os = socket.getOutputStream();
		os.write("welcome".getBytes());
		
		is.close();
		os.close();
		socket.close();
	}
}
package com.bob.network;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class TcpClient {
	public static void main(String[] args) throws Exception{
		Socket socket = new Socket("localhost", 7777);
		
		OutputStream os = socket.getOutputStream();
		os.write("hello".getBytes());


		InputStream is = socket.getInputStream();
		byte[] buffer = new byte[200];
		int length = is.read(buffer);
		System.out.println(new String(buffer, 0, length));
		
		is.close();
		os.close();
		socket.close();
	}
}
三、UDP(使用无线连接的数据报)

   ·什么是Datagram:数据报是网上传输的独立数据包,数据报是否能正确地到达目的地,到达的时间,顺序,内容的正确性均没有保障。

package com.bob.network;

import java.net.DatagramPacket;
import java.net.DatagramSocket;

class UdpTest2 {
	public static void main(String[] args) throws Exception {
		DatagramSocket socket = new DatagramSocket(7000);	//监听端口7000等待接收数据包
		
		byte[] buffer = new byte[1024];
		DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
		socket.receive(packet);
		System.out.println(new String(buffer, 0, packet.getLength()));

		String str = "thanks";
		//获得接收到之后的数据包的地址、端口
		DatagramPacket packet2 = new DatagramPacket(str.getBytes(),
				str.length(), packet.getAddress(), packet.getPort());
		socket.send(packet2);
		
		socket.close();

	}
}
package com.bob.network;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class UdpTest1 {
	public static void main(String[] args) throws Exception {
		DatagramSocket socket = new DatagramSocket();	//创建socket用于发送接收数据报
		
		String str = "hello world";
		DatagramPacket packet = new DatagramPacket(str.getBytes(),
				str.length(), InetAddress.getByName("localhost"), 7000);
		socket.send(packet);
		
		byte[] buffer = new byte[1024];
		DatagramPacket packet2 = new DatagramPacket(buffer, buffer.length);
		socket.receive(packet2);
		
		System.out.println(new String(buffer, 0, packet2.getLength()));
		
		socket.close();
	}
}














  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值