黑马程序员Java基础之网络编程(net)

原创 2012年03月28日 16:19:05

---------------------- android培训java培训、期待与您交流! ----------------------

 终于写到自己想写的章节了,早就看到报道出某某知名国际网站被国人入侵,对这些牛人很是钦佩。我很爱国,可没有能力实际行动,这些牛人靠自己的网络技术替国人出了口恶气。他们嫉恶如仇,可以“轻轻的来,轻轻的去,在你的后台留下我的标记”但却不是善恶不分,他们可以做黑客同样可以是红客成为网络安全的守护神。闲话少说,千里之行始于足下,先来看看基础要点。。。

基础要点

1UPDTCP

UPD:不需链接所以速度快,同样因为无连接所以不可靠,每个数据包大小限制在64k内。

TCP:需三次握手建立链接所以效率会稍低,但是可靠协议,可进行大数据传输

2、用于UPD网络编程的套接字(又叫自寻址套接字)

DatagramSocket类和DatagramPacket类

3、用于TCP网络编程的套接字(又叫流套接字)

ServerSocket类和Socket类,区别是前者只能用于服务器端,而后者无此限制。 

先写个接受和发送UPD的例子:

package horse;
import java.io.*;
import java.net.*;
/**这是一个udp接受端
 */
public class UDPReceive {
	public static void main(String[] args) throws Exception {
		//创建接受socket对象
		DatagramSocket socket = new DatagramSocket(1026);
		while(true){
			byte[] bu = new byte[1026];
			//创建数据包保存传来的数据
			DatagramPacket packet = new DatagramPacket(bu,bu.length);
			//接受数据到packet对象
			socket.receive(packet);
			//获取对方的ip
			String ip = packet.getAddress().getHostAddress();
			//得到对方数据
			String data = new String(packet.getData(),0,packet.getLength());
			System.out.println(ip+":"+data);
		}
	}
}

 

下面是UPD的发送端

package horse;

import java.io.*;

import java.net.*;

/**这是一个udp发送端

 */

publicclass UDPSend {  

    publicstaticvoid main(String[] args) throws Exception {

       //创建发送端DatagramSocket对象

       DatagramSocket socket = new DatagramSocket();

       //包装标准字节输入流

       BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

       String line = null;

       while(null!=(line=br.readLine())){

           byte[] bu = line.getBytes();

           //数据打包发送

           DatagramPacket packet = new DatagramPacket(bu,bu.length,InetAddress.getByName("localhost"),1026);

           socket.send(packet);

       }

       socket.close();

    }

}

在举一个tcp方面的例子:

package horse;
import java.net.*;
import java.io.*;
/**这是一个客户端
 * @param args
 */
public class ClientTCP {
	public static void main(String[] args) throws Exception {
		// 创建客户端Socket对象,其中有主机、端口参数
		Socket socket = new Socket("localhost",1025);
		//获取客户端输出流
		OutputStream os = socket.getOutputStream();
		os.write("asdf".getBytes());
		//os.write((System.in).getBytes());
		//获取客户端输入流
		InputStream is = socket.getInputStream();
		//定义接受字符的长度
		byte[] buf = new byte[1024];
		int length =is.read(buf);
		System.out.println(new String(buf,0,length));
		//关闭Socketd对象释放资源
		socket.close();
	}
}

下面是tcp的接收端

package horse;
import java.io.*;
import java.net.*;
/**这是一个tcp的接收端
 * @param args
 */
public class ServerTCP {	
	public static void main(String[] args) throws Exception {
		//建立服务端ServerSocket对象,监听一个端口
		ServerSocket ss = new ServerSocket(1025);
		//获取连接过来的客户端对象
		Socket socket = ss.accept();
		//获取客户端的输入流对象
		InputStream is = socket.getInputStream();
		byte[] bu = new byte[1024];
		int length = is.read(bu);
		System.out.println(new String(bu,0,length));
		//获取客户端输出流
		OutputStream os = socket.getOutputStream();
		os.write("fdsa".getBytes());
		//关闭连接过来的socket对象,是否资源
		socket.close();		
	}
}

感受:这里在写程序时出现了一点问题,就是得抛异常,刚开始我没抛结果红的触目惊心全错!后来写上throws Exception就好多了。异常和网络编程还有I/O流是结合使用的,在写上两方面的例子时,多要抛异常。不得不说JAVA这个机制真人性化,总有做不到的事情,那怎么办呢?抛异常吧!人不一样吗,做不到就先不做了留到以后再说,总有一天会醍醐灌顶的。。。要是总自己搂着怎么能楼得住呢?所以呢,也很感谢黑马提供论坛这个平台,能够让我们把自己搂不住的问题提出来在这里得到答案。

 ---------------------- android培训java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

黑马程序员--Java基础--网络编程java.net

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-网络编程 java.net1. 找到对方IP 2. 数据要发送到对方指定的应用程序上,为了标示这些应用程序,给这些...

黑马程序员_Java基础_网络编程(下)_24

------- android培训、java培训、期待与您交流!----------   导读:TCP上传图片,TCP-客户并发登陆,浏览器客户端-自定义服务端,浏览器客户端-Tomcat服务端,自定...

黑马程序员------java基础----网络编程

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 网络编程=网络+IO 网络模型: OSI七层模型:物理层    数据链路层   网络层    ...

Java基础---网络编程 (黑马程序员)

1、网络模型:OSI参考模型和TCP/IP参考模型 图示:         一般来说开发处于传输层和网际层,应用层为:FTP和HTTP协议等,传输层为:UDP和TCP等,网际层为:IP。  ...

黑马程序员——JAVA基础----网络编程

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------  网络编程 01_网络编程(网络编程概述)(了解) ...
  • Du_jing
  • Du_jing
  • 2015年11月05日 17:35
  • 171

黑马程序员——Java基础知识——网络编程

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!  网络编程 -------------Java...

黑马程序员--Java基础学习(网络编程)第二十三天

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- Java基础学习(网络编程)第二十三天 一,概述 网络模型:OSI参考模型,T...

黑马程序员_Java基础_网络编程相关小项目

一、网络编程(TCP-上传图片) [java] view plaincopy /*  需求:上传图片。  */      /*  客户端:  1.服务端点。  2.读取客户端已...

黑马程序员——java基础——网络编程

一、网络编程 1、什么是网络编程? 网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机。数据传递本身没有多大的难度,不就是把一个设备中的数据发送给两外一个设备,然后接受...
  • Huberry
  • Huberry
  • 2014年09月22日 07:22
  • 433

黑马程序员——java基础知识之网络编程(二)

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——- (一)网络编程的深入 1、基础知识总结: ①网络编程:主要是和IO流联系紧密,基本上有网络编程的地方,就有...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员Java基础之网络编程(net)
举报原因:
原因补充:

(最多只允许输入30个字)