网络编程:就是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培训、期待与您交流! ------