这个是给女朋友写的:)
首先需要知道我们每个电脑都可以成为server(服务器) 和 client(客户端)
我们需要使用java来实现客户端与服务器的数据传输
先帖上代码
注意这里两张代码处于两个java project 中,因为我们实际上情况上是两台电脑来运行,但是由于演示方便这里就本机既充当
客户端也充当服务器。。。。。
服务端::
package net; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; public class Server { public Server() { try { // conn为connection的缩写;ServerSocket服务器端口 // 后面ServerSocket(1234)里面的1234为端口号,要大于 1024小于65535. 0~1024为系统预留的端口号,总共一共有65535个端口号 ServerSocket ss = new ServerSocket(1234); // 服务器新建一个端口,端口号为1234 System.out.println("成功启动服务器,等待客户端连接!!!!!!!"); Socket tcpConn = ss.accept(); // 接收客户端的链接 // tcpConn.getInetAddress()获取连入服务器的客户端的ip地址; tcpConn.getPort()获取连入服务器的客户端的端口号 System.out.println("收到客户端连接,来自:" + tcpConn.getInetAddress() + ":" + tcpConn.getPort()); // 读取客户端给服务器的东西,并且返回东西给客户端 InputStream in = tcpConn.getInputStream(); // 获取数据 Scanner netIn = new Scanner(in); // 用这个方法可以获取客户端传过来的数据,但不是很好。接收传过来的东西 OutputStream out = tcpConn.getOutputStream(); String receiveStr = netIn.nextLine(); // 读取客户端给服务器的东西,存在变量里面 System.out.println("收到来自客户端得数据:" + receiveStr); String returnStr = "0.0" + receiveStr + " "; // 后面加了一个 是为了配合Scanner方法 out.write(returnStr.getBytes()); // 将这个东西返回到客户端 System.out.println("返回给客户端的数据:" + returnStr); // 全部关闭 in.close(); out.close(); tcpConn.close(); ss.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * @param args */ public static void main(String[] args) { new Server(); } }
客户端::
package net; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; public class Client { public Client() { try { // new一个端口出来,前面的"127.0.0.1"为本机的ip地址,后面的1234为需要连接的服务器的端口号 Socket tcpConn = new Socket("127.0.0.1",1234); System.out.println("成功连接到服务器!!!!!!!"); // 向服务器发送东西,并且接受服务器的返回 InputStream in = tcpConn.getInputStream(); OutputStream out = tcpConn.getOutputStream(); Scanner netIn = new Scanner(in); // 这个是为了接收传过来的东西 System.out.println("请输入要发送给服务器的数据:"); Scanner keyIn = new Scanner(System.in);// 读取键盘输入 String str = keyIn.nextLine() + " "; // 读取键盘输入,赋值给字符串 out.write(str.getBytes());//写入流操作必须是字节类型写入 String returnStr = netIn.nextLine(); // 接收服务器传过来的东西,赋值给一个字符串 System.out.println("接收到来自服务器的返回数据:" + returnStr); in.close(); out.close(); tcpConn.close(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * @param args */ public static void main(String[] args) { new Client(); } }
注意运行时,用编译器ide运行是不行的,因为编译器无法同时运行两个主函数
所以我们需要使用控制台cmd来操作两个项目
————————如何使用cmd的方法当然也有哦::点击进入查看如何使用cmd运行java
执行结果如下:
服务器
客户端
以上谢谢学习!!!