黑马程序员--网络编程

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





网络编程:就是Socket编程,Socket就是为网络提供的一种机制

有效端口范围:0-65535 其中0-1024是系统占用的端口

传输协议
 常见协议:UDP、TCP
UDP的特点:
面向无连接,对于发出的数据进行封包,包的大小限制是64k,
速度快,容易丢包,是不可靠协议。
TCP的特点:
建立起连接,形成传输数据的通道,在连接中进行大数据的的传输,
通过三次握手完成连接速度慢,安全性高,是可靠协议。

例1
import java.net.*;
class WlDemo
{
public static void main(String[] args)throws Exception
{
InetAddress ia = InetAddress.getByName("8fedh");
            System.out.println(ia.toString());//返回的是主机名和IP地址
            System.out.println(ia.getHostAddress());//获取本机IP地址
            System.out.println(ia.getHostName());//获取本机名
            InetAddress i = InetAddress.getLocalHost();
            System.out.println(i.toString());
    }  
}



例子2
需求:通过Udp传输协议;将一段数据发送到接收端


发送端
思路:
1、建立DatagramSocket 服务
2、提供数据,并将数据封装到数据包
3、通过Socket服务的发送功能,将数据包发出去
4、关闭资源



import java.io.*;
class Send
{
public static void main(String[] args) throws IOException
{
 DatagramSocket ds=new DatagramSocket();  //建立Socket服务
 char[] buf="ni hao,".getBytes(); //建立数据,并转变成字节数组
 DatagramPacket dp
=new DatagramPacket(buf,0,buf.length,InetAddress.getByName(192.168.1.254,10000))
                             //数组,发送全部意思,目标地址和端口


 ds.send();   //发送数据
 ds.close(); 
}


}


接收端
思路:
1.建立DatagramSocket 服务
2、定义一个数据包,因为要存储接收到的字节数据
3、通过Socket服务的receive的方法收到将存到已建立好的数组
4、通过数据包对象特有的功能,将不同的数据取出来,打印在控制台上
5、关闭资源
*/


import java.net.*;
class ReceiveDemo
{
public static void main(String[] args)
{
  DatagramSock ds=new DatagramSock();   //建立Socket服务
  char[] buf=new char[1024]           //因为要存放数据,所以建立数组
  DatagramPacket dp=DatagramPacket(buf,0,buf.length)  // 把数据放到包
  ds.receive();     //接收数据
  
  String ip=new String(dp.getAddress().getHostAddress());//从上面的包获取IP地址
  int port=dp.port(); //从上面的包获取端口
  String data=new String(dp.getData(),0,dp.length())//从上面包获取数据
  System.out.println(ip+".."+data".."+port) //打印ip地址,端口,数据
  ds.close




}






}


例子3:
需求:客户端发信息到服务端,服务端收到并回复
客户端



import java.io.*;
import java.net.*;


class 
{
public static void main(Sring[] args)


{
Socket s=new Socket("192.168.1.254,10009");//建立Socket服务,连接IP和端口


OutputStream out=s.getOutputStream()   //输出流对象
out.write("你好,".getBytes());  //变成字节数组
InputStream in=s.getInputStream();
byte[] len=new byte[1024];
int len=in.read(buf)
System.out.println(new String(buf,0,len));
s.close


}
}




服务端


import java.io.*;
import java.net.*;


class TcpServerDemo
{
public static void main(String[] args)
{
  ServerSocket ss=new ServerSocket(10009);//建立服务端对象和侦听端口
Socket s=ss.accept() //获取客户端对象
    String ip=s.getInetAddress().getHostAddress();//获取到对象就可以查IP
    System.out.println(ip)  //打印IP地址


InputStream in=s.getInputStream();
byte[] buf=new byte[1024];
int len=in.read(buf);


System.out.println(new String(buf,0,len));
OutputStream out=S.getOutputStream();
out.erite("你也好。getBytes()");
s.close

}



}

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值