Java 简单的 socket 编程入门实战

这个是给女朋友写的:)

首先需要知道我们每个电脑都可以成为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 

 执行结果如下:

服务器

客户端

以上谢谢学习!!!

原文地址:https://www.cnblogs.com/liushuncheng/p/6759313.html