计算机网络中的课程,我们运用java的网络编程,主要是在传输层应用(TCP/UDP)编程。
IP地址:java中提供InetAddress包,
java的网络编程也称为套接字编程。
以下是一个TCP例子,一个UDP例子
聊天案例:
服务端:
package com.cihiyuanzhang.tcp;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
//服务端
public class TcpServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket=null;
Socket socket=null;
InputStream inputStream=null;
ByteArrayOutputStream baos=null;
try {
//1服务端有一个地址
serverSocket=new ServerSocket(9999);
//2等待客户端连接过来
socket=serverSocket.accept();
//3读取客户端信息
inputStream=socket.getInputStream();
//管道流
baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len=inputStream.read(buffer))!=-1){
baos.write(buffer,0,len);
}
System.out.println(baos.toString());
} catch (IOException e) {
e.printStackTrace();
}finally {
//关闭资源
baos.close();
inputStream.close();
socket.close();
serverSocket.close();
}
}
}
客户端
package com.cihiyuanzhang.tcp;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
//客户端
public class TcpClient {
public static void main(String[] args) throws IOException {
InetAddress serverIP=null;
Socket socket=null;
OutputStream os=null;
try {
//要知道服务器地址,端口号
serverIP = InetAddress.getByName("127.0.0.1");
int port = 9999;
//创建一个socket连接
socket = new Socket(serverIP,port);
//发送消息 IO流
os = socket.getOutputStream();
os.write("你好,欢迎学习".getBytes());
} catch (IOException e) {
e.printStackTrace();
}finally {
os.close();
socket.close();
}
}
}
UDP发送消息例子
客户端1:
package com.cihiyuanzhang.udp;
import java.io.IOException;
import java.net.*;
public class UdpClientDemo1 {
public static void main(String[] args) throws IOException {
//1建立一个socket
DatagramSocket socket = new DatagramSocket();
//2建个包
String msg ="你好啊,服务器";
InetAddress localhost = InetAddress.getByName("localhost");
int port = 9090;
//数据,数据的长度起始,要发给谁
DatagramPacket packet = new DatagramPacket(msg.getBytes(),0,msg.getBytes().length,localhost,port);
//3发送包
socket.send(packet);
//4关闭流
socket.close();
}
}
client2示例:
package com.cihiyuanzhang.udp;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
//服务端还是处于等待客户端的连接,处于监听状态
public class UdpServerDemo1 {
public static void main(String[] args) throws IOException {
//服务端开放端口
DatagramSocket socket = new DatagramSocket(9090);
//接收数据包
byte[] buffer = new byte[1024];
DatagramPacket packet=new DatagramPacket(buffer,0,buffer.length); //接收
socket.receive(packet);
//关闭连接
socket.close();
}
}