java网络编程如果在一台机器上可以用到一个回文地址做测试,127.0.0.1(localhost).
java网络编程用到socket类,socket 是面向客户/服务器模型而设计的,也就是常说的c/s模式。
1.网络编程需要有一个服务器端,在服务器端创建一个ServerSocket,然后掉用accept方法等待客户端连接。
2.客户端需要创建一个Socket,并请求与服务器连接。
3.服务器接收客户端的连接请求,并创建一个新的Socket与用户进行连接,连接的时候需要注意客户端的端口号与服务器端的端口号要保持一致。
4.端口号0———1023不能够随意的使用,所以挑选端口号的时候要用1024以后的
下面是我写的一个小例子,服务器端给了客户端一个圆的半径为1,然后服务器端计算出来结果,再用流的方式返回给服务器端。
客户端
Java代码
- import java.io.DataInputStream;
- import java.io.DataOutputStream;
- import java.io.IOException;
- import java.net.ServerSocket;
- import java.net.Socket;
- public class javaServer {
- public static void main(String[] args) {
- try {
- ServerSocket ss = new ServerSocket(1408); //创建了一个ServerSocket,端口号为1408;
- Socket socket = ss.accept(); //创建了一个Socket的对象等待用户连接
-
- DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
- dos.writeUTF("1"); //传送给客户端一个值为1的圆的半径
- dos.flush(); //清空此数据输出流
-
-
- DataInputStream dis = new DataInputStream(socket.getInputStream());
- System.out.println("圆的面积是"+dis.readUTF()); //将客户端返回给服务器的结果输出
- dos.close(); //关闭输出流
- dis.close(); //关闭输入流
- ss.close(); //关闭ServerSocket
- socket.close(); //关闭Socket
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- }
-
- }
客户端
Java代码
- import java.io.DataInputStream;
- import java.io.DataOutputStream;
- import java.io.IOException;
- import java.net.*;
- import org.omg.CORBA.portable.OutputStream;
- public class javaClient {
- public static void main(String[] args) {
- int temp = 0,result;
- try {
-
- Socket s = new Socket("localhost",1408); //建立一个Socket的对象,端口号与服务器端保持一致
-
- DataInputStream dis = new DataInputStream(s.getInputStream());
- temp = Integer.parseInt(dis.readUTF());
- System.out.println("圆的半径是"+temp);
- result = (int) (Math.PI*temp*temp); //计算圆的面积
-
-
- DataOutputStream dos = new DataOutputStream(s.getOutputStream());
- dos.writeUTF(result+""); //让结果变成String型
- dis.close();
- dos.flush();
- dos.close();
- s.close();
- } catch (UnknownHostException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- }
-
- }
输出的结果,客户端输出的结果
Java代码
- 圆的半径是1
服务器端输出的结果
Java代码
- 圆的面积是3