Java简单的socket编程入门实战
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java简单的socket编程⼊门实战
这个是给⼥朋友写的:)
⾸先需要知道我们每个电脑都可以成为server(服务器) 和 client(客户端)
我们需要使⽤java来实现客户端与服务器的数据传输
先帖上代码
注意这⾥两张代码处于两个java project 中,因为我们实际上情况上是两台电脑来运⾏,但是由于演⽰⽅便这⾥就本机既充当客户端也充当服务器。
服务端::
package net;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import .ServerSocket;
import .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 + "\n"; // 后⾯加了⼀个\n是为了配合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 .Socket;
import .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() + "\n"; // 读取键盘输⼊,赋值给字符串
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的⽅法当然也有哦::
执⾏结果如下:
服务器
客户端
以上谢谢学习。