JAVA服务器端编程简诉

JAVA服务器端编程(TCP)

网络编程就是两个或多个设备之间的数据交换,其实更具体的说,网络编程就是两个或多个程序之间的数据交换,和普通的单机程序相比,网络程序最大的不同就是需要交换数据的程序运行在不同的计算机上,这样就造成了数据交换的复杂。虽然通过IP地址和端口可以找到网络上运行的一个程序,但是如果需要进行网络编程,则还需要了解网络通讯的过程。

网络编程分为 客户端服务器(C/S)模式和浏览器服务器(B/S)模式,而网络编程遵循的协议分为:TCP和UDP。其实网络编程并不难,基本思路是首先客户端和服务器端要建立连接,然后客户端和服务器端进行数据交换,最后客户端和服务器端都断开连接释放资源。网络编程就是两个或多个设备之间的数据交换,其实更具体的说,网络编程就是两个或多个程序之间的数据交换,和普通的单机程序相比,网络程序最大的不同就是需要交换数据的程序运行在不同的计算机上,这样就造成了数据交换的复杂。虽然通过IP地址和端口可以找到网络上运行的一个程序,但是如果需要进行网络编程,则还需要了解网络通讯的过程。

网络编程分为 客户端服务器(C/S)模式和浏览器服务器(B/S)模式,而网络编程遵循的协议分为:TCP和UDP。基本思路是首先客户端和服务器端要建立连接,然后客户端和服务器端进行数据交换,最后客户端和服务器端都断开连接释放资源。

简单的服务器端编程

服务器端是等待客户端的连接,然后接受客户端的请求,并对请求数据进行逻辑分析,然后将分析后的结果反馈给客户端,其具体实现步骤如下:

(1)、创建 ServerSocket对象,监听特定端口,等待客户端的连接
ServerSocket serverSocket=new ServerSocket(port);
Socket socket2=serverSocke.accept();
根据创建的连接创建输入输出流
OutputStream os = socket2.getOutputStream(); // 获得输出流
InputStream is = socket2.getInputStream(); // 获得输入流
(2)接收客户端发送的内容
byte[] b=new byte[1024];
int n=is.read(b);
String quite=new String(b,0,n);
(3)将处理的结果返回给客户端
os.write(result.getBytes());
(4)关闭流和连接
os.close();
is.close();
socket2.close();
serverSocket.close();
服务器端代码示例:
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class SimpleSocketServer {
public static void main(String[] args) {
// TODO Auto-generated method stub
ServerSocket serverSocket=null;
Socket socket2=null;
OutputStream os=null;
InputStream is=null;
int port=10000;
try{
// 建立连接
serverSocket=new ServerSocket(port);
// 获得连接
socket2=serverSocket.accept();
// 接受客户端发送的内容
is=socket2.getInputStream();
byte[] b=new byte[1024];
int n=is.read(b); // 输出
System.out.println(“客户端发送内容为:”+new String(b,0,n)); // 向客户端发送回馈内容
os=socket2.getOutputStream();
os.write(b,0,n);
}catch(Exception e){
e.printStackTrace();
}finally {
try{ // 关闭流和链接
os.close();
is.close();
socket2.close();
serverSocket.close();
}catch(Exception e){
e.printStackTrace():
}
}
}
}

如何建立Socket连接

如何实现建立一次连接,进行多次数据交换呢?其实很简单,建立连接以后,将数据交换的逻辑写到一个循环中就可以了。这样只要循环不结束则连接就不会被关 闭。按照这种思路,可以改造一下上面的代码,让该程序可以在建立连接一次以后,发送三次数据,当然这里的次数也可以是多次,示例代码如下:
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class SimpleSocketServer {

     public static void main(String[] args) {
      // TODO Auto-generated method stub 
      ServerSocket serverSocket=null; 
      Socket socket2=null; OutputStream os=null;
       InputStream is=null; 
       int port=10000;
        try{ 
        // 建立连接 
        serverSocket=new ServerSocket(port);
         // 获得连接 
         socket2=serverSocket.accept(); 
         // 接受客户端发送的内容 
         is=socket2.getInputStream();
          os=socket2.getOutputStream();
           byte[] b=new byte[1024];
            for(int i=0;i<3;i++){ int n=is.read(b);
             // 输出 
                  System.out.println("客户端发送内容为:"+new String(b,0,n));
                   // 向客户端发送回馈内容 
                   os.write(b,0,n);
                    }
             }catch(Exception e){
                      e.printStackTrace();
              }finally { try{
               // 关闭流和链接
                os.close();
                 is.close();
                  socket2.close();
                   serverSocket.close();
    }catch(Exception e){
          e.printStackTrace();
           }
      }
   }

}

发布了9 篇原创文章 · 获赞 0 · 访问量 927

猜你喜欢

转载自blog.csdn.net/weixin_46146588/article/details/105088185
今日推荐