Java的Socket编程--服务器

今天,我们来做一个基于Java的简单服务器
很多小伙伴对服务器可能模模糊糊,服务器到底是什么,它有什么用呢,服务器是提供一个远端的接口,供我们的其他东西去连接,然后对来自浏览器或客户端的请求给出回应(也就是服务),实现数据在英特网上的远程传输,和数据处理。后面我将更新远程智能家居的相关博文。
废话不多说,我们这里使用Java来写,我用的是eclipse。当然编程工具很多,你直接用记事本来写也是可以的,这段简单的服务器代码你可以直接编译运行在你的服务器上或你的电脑上去,前提是请配置好运行环境,在配置Java环境上网上教程很多,这里就不去一一赘述了。下面直接上代码:
/************************************************************/
/AImss此程序为简单的socket网络数据传输。

  • 读写类均写为内部类,方便socket调用。
  • 外部读写类没有用到,后续扩展程序用。
  • 选择目录: S/s停止读取进程。W/w回车+String“”发送数据“”。E/e退出程序。
    /
    package MyServer; //这是包名,请修改为你的包名
    如果不懂的同学,可以参考Java基础学习。
    import java.util.
    ;
    import java.io.*;
    import java.net.ServerSocket;
    import java.net.Socket;

public class Server_Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
Server_receive1 re = new Server_receive1();//实例化对象
re.start(); //Can use External class:Server_receive
while(true) {
try {
String U_input=in.next();
if(U_input.equals(“W”)||U_input.equals(“w”)) {//写模式,启动发送线程
String ss=in.next();
re.writes(ss); //进入写模式
//re.interrupt();
}
if(U_input.equals(“S”)||U_input.equals(“s”)) {//Exist from Receive status
re.stops();
}
if(U_input.equals(“CON”)||U_input.equals(“con”)) {//Exist from Receive status
//re.interrupt();//继续读取线程(就绪)
}
if(U_input.equals(“E”)||U_input.equals(“e”)) {//Exist from Receive status
break;//停止读取线程
}
}catch (Exception e) {
e.printStackTrace();
System.out.println(“线程内部错误!”);
}
}
}
/内部接收类包含了写方法***************************/
static class Server_receive1 extends Thread{
public int i=0;
InputStream in=null; //输入流
OutputStream out=null; //输出流
boolean status = true; //The status to Receive data
BufferedReader buffRead;
PrintWriter prWrite;
public Server_receive1() {
super(“线程receive 启动”);
}
public void run() {
try {
System.out.println(“入口”);
ServerSocket Server1=new ServerSocket(6600);
Socket socket=Server1.accept();//Set socket
System.out.print(this.getName());//out this super name
/************************/
Reader reader =new InputStreamReader(socket.getInputStream());
buffRead=new BufferedReader(reader);
prWrite=new PrintWriter(socket.getOutputStream(),true);
/************************/
while(status) {
System.out.println(“接收:”+buffRead.readLine().toString());//Print receive data
sleep(200);
}
//socket.close(); //退出接收循环后关闭socket(不关闭是可以继续发送数据)
}catch(Exception e) {e.printStackTrace();}
}
public void writes(String s) {
System.out.println(“发送:”+s);
prWrite.println(s);
}
public void stops() {
System.out.println(“接收线程退出”);
status=false;//改变状态,退出Receive socket
}
}
/*********************************************/
}
在这里,可能很多人觉得代码写得相当杂乱,实则不然,由于代码是从源代码粘贴过来的,格式发生了变化,但是内容运行无问题。在运行代码后,服务器处于等待连接状态,当有其他设备连接服务器后,窗口打印字符:“入口”,说明服务器连接成功,已经处于接收状态,当对方发送数据后,服务器会在命令行打印收到的数据,手动在命令行输入字母“W”回车,然后输入你要发送的字符串,回车;字符串就会成功发送。在这段代码中主要用到Socket编程和Java的多线程,后面有时间会写关于多线程的博文。
运行截图:
看完这篇文章如果对你有帮助,别忘了小小一个赞哦 ^ _ ^。
简单的web服务器

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值