黑马程序员_java入门_网路编程_01

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

一.网络概述

七层协议,了解一下。应用层 ,表示层,会话层,传输层,网络。数据链路层,物理层


二.IP地址

InetAdress i=InetAdress.getLocalHost();获取本地主机信息 包括 IP地址和主机名

i.getHostAdress()

i.getHostName()


getAllByteName("www.baidu.com")通过主机名获得IP地址数组


三.网络编程

TCP面向有链接

UDP面向无连接



udp服务

步骤:1.建立UDP服务,建立数据对象Socket

DatagramSocket ds=new DategramSocket(1001)

2.封装数据包

byte[] buf="你好".getBytes();

DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.101"),1000);

3.ds.send(dp);发送信息

4.关闭资源

ds.close()


接收端

步骤

1.DatagramSocket ds=new DatagramSocket(1000)

2.byte[] buf=new byte[1024]

3.封装起来

DatagramPacket dp=new DatagramPacket(buf,buf.length)//定义接收数据包

4.ds.receive(dp)

5.然后随便取


TCP有链接服务

客户端

建立socket对象

Socket s=new Socket(“192.168.0.011”,1005);目的主机和端口

建立输出流

OutputStream out=s.getOutputStream();

out.write("TCP..".getBytes());

s.close();



服务端

建立ServerSocket ss=new ServerSocket(1005)监听自己的1005端口

Socket s=ssaccept();阻塞式


String ip=s.getInetAddress().getHostAdress


获取数据

InputStream in=s.getInputStream()


再用 in.read()方法进行读写了



s.close();//关闭客户端

ss.close();//关闭服务端

实例练习

文本操作字符流,提高效率 ,加入缓冲
import java.io.*;
import java.net.*;
class TransClient
{
	public static void main(String[] args)
	{
		Socekt s=new Socket("192.168.1.254",10005);
		BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bufwOut=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));//玩文本最方便是字符流
		BufferedReader bufrIn=new BufferedReader(new InputStream(s.getInputStream()));
		String line=null;
		while((line=bufr.readLine())!=null)
		{
			if("over".equlas(line))
				break;
			bufwOut.write(line);
			bufwOut.newLine();
			bufwOut.flush();
			String str=bufrIn.readLine();

		}

	}
	s.close();
	bufr.close();



}
class TranServer
{
	public static void main(String[] args)
	{
		ServerSocket ss=new ServerSocket(10005);
		Socket s=ss.accept();
		Sting ip=s.getInetAdrress().getHostAddress();
		BufferedReader bufrIn=new BufferedReader(new InputStream(s.getInputStream()))
		BufferedWriter bufwOut=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
		String line=null;
		While((line=bufrIn.readLine())!=null)
		{
			bufwOut.write(line.toUpperCase());
			bufwOut.newLine();
			bufwOut.flush();
	
		}
		s.close();
		ss.close()


	}




}




你可能感兴趣的:(黑马程序员_java入门_网路编程_01)