java网络编程
网络编程就是指控制Socket,Socket是为网络服务提供的一种机制
网络模型
• OSI参考模型
• TCP/IP参考模型
网络通讯要素
• IP 地址
• 端口号
• 传输协议
TCP和UDP
UDP
• 将数据及源和目的封装成数据包中,不需要建立连接
• 每个数据报的大小在限制在64k 内
• 因无连接,是不可靠协议
• 不需要建立连接,速度快
TCP
• 建立连接,形成传输数据的通道。
• 在连接中进行大数据量传输
• 通过三次握手完成连接,是可靠协议
• 必须建立连接,效率会稍低
关于TCP传输:tcp分客户端和服务端,客户端对应的对象是Socket,服务端对应的对象是ServerSocket。因为因为tcp是面向连接的。所以在建立socket服务时,就要有服务端存在,并连接成功。形成通路后,在该通道进行数据的传输。
class TcpClient //tcp传输
{
public static void main(String[] args) throwsException
{
//创建客户端的socket服务。指定目的主机和端口
Socket s = newSocket("192.168.1.254",10003);
//为了发送数据,应该获取socket流中的输出流。
OutputStream out = s.getOutputStream();
out.write(" socket demo ".getBytes());
s.close(); //关闭资源
}
}
接下来就来建立服务端,分为4个步骤:1,建立服务端的socket服务 2,获取连接过来的客户端对象。服务端要使用对应的客户端对象,并获取到该客户端对象的读取流来读取发过来的数据。 4,关闭资源。
class TcpServer
{
public static void main(String[] args) throwsException
{
//建立服务端socket服务。并监听一个端口。
ServerSocket ss = new ServerSocket(10003);
//通过accept方法获取连接过来的客户端对象。
while(true)
{
Socket s = ss.accept();
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip+"_____connected");
//使用客户端对象的读取流来读取数据。
InputStream in = s.getInputStream();
byte[] buf = new byte[1024];
int len = in.read(buf);
System.out.println(new String(buf,0,len));
s.close();//关闭客户端.
}
//ss.close();
}
}
以上是关于TCP服务端和客户端最基本的建立方式,只有清晰的理解了这些流程,与对以后TCP客户端还有服务端的互访就可以很好理解了,实现客户端和服务端的互访,就是在客户端加了一个读取流对象InputStream in = s.getInputStream();用来接收服务器端的数据,而服务器端则调出来输入流OutputStream out =s.getOutputStream();就这样实现了互访。
UDP网络程序
DatagramSocket类:
1、构造函数:
-publicDatagramSocket()//先发送..
-publicDatagramSocket(int port)//先接受,后发送..
-publicDatagramSocket(int port,lnetAddress laddr)
2、close方法
3、send(DatagramPacket p)方法
4、receive(DatagramPacket p)方法
如果把DatagramSocket比作创建的港口码头,那么DatagramSocket就是发送和接收
数据的集装箱。
1、构造函数:
public DatagramSocket(byte[] buf,int length)
publicDatagramSocket(byte[] buf,int length,lneAddress address,int port)
2、getlnetAddress和getPort方法
3、getData和getLength方法
----------
lnetAddress类
getByName方法
getHostAddress方法
----------
ServerSocket类
1.构造函数:
-publicServerSocket()
-publicServerSocket(int port)
-publicServerSocket(int port,int backlog)
-publicServerSocket(int port,int backlog,InetAddress bindAddr)
2/clase方法
3、accept方法
-----------
Socket
1、构造函数
-public Socket()
-publicSocket(String host,int port)
-publicSocket(InetAddress address,int port)
-publicSocket(String host,int port,InetAddress localAddr,int
localPort)
-publicSocket(InetAddress address,int port,InetAddress localAddr,int localPort)
2、getInputStream和getOutputStream方法
本文介绍了Java网络编程的基础概念,包括TCP/IP模型、网络通讯要素等,并详细讲解了TCP和UDP两种传输协议的特点及其在Java中的应用。通过示例代码演示了如何使用Socket类建立TCP客户端和服务端,以及如何使用DatagramSocket类实现UDP通信。

3万+

被折叠的 条评论
为什么被折叠?



