Java网络通信基础编程(必看篇)
方式一:同步阻塞方式(BIO):
服务器端(Server):
packagecom.ietree.basicskill.socket.mode1;
importjava.io.IOException;
importjava.net.ServerSocket;
importjava.net.Socket;
/**
*服务端
*/
publicclassServer{
//端口号
finalstaticintPORT=8765;
publicstaticvoidmain(String[]args){
ServerSocketserver=null;
try{
server=newServerSocket(PORT);
System.out.println("Serverstart......");
//进行阻塞
Socketsocket=server.accept();
//创建一个程序执行客户端的任务
newThread(newServerHandler(socket)).start();
}catch(IOExceptione){
e.printStackTrace();
}finally{
if(server!=null){
try{
server.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
server=null;
}
}
}
采用多线程来处理接收到的请求(ServerHandler):
packagecom.ietree.basicskill.socket.mode1;
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.PrintWriter;
importjava.net.Socket;
publicclassServerHandlerimplementsRunnable{
privateSocketsocket;
publicServerHandler(Socketsocket){
this.socket=socket;
}
@Override
publicvoidrun(){
BufferedReaderin=null;
PrintWriterout=null;
try{
in=newBufferedReader(newInputStreamReader(this.socket.getInputStream()));
out=newPrintWriter(this.socket.getOutputStream(),true);
Stringbody=null;
while(true){
body=in.readLine();
if(body==null){
break;
}
System.out.println("Server:"+body);
out.println("服务器端回送响应的数据。");
}
}catch(Exceptione){
e.printStackTrace();
}finally{
if(in!=null){
try{
in.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
if(out!=null){
try{
out.close();
}catch(Exceptione){
e.printStackTrace();
}
}
if(socket!=null){
try{
socket.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
socket=null;
}
}
}
客户端(Client):
packagecom.ietree.basicskill.socket.mode1;
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.PrintWriter;
importjava.net.Socket;
/**
*客户端
*/
publicclassClient{
finalstaticStringADDRESS="127.0.0.1";
finalstaticintPORT=8765;
publicstaticvoidmain(String[]args){
Socketsocket=null;
BufferedReaderin=null;
PrintWriterout=null;
try{
socket=newSocket(ADDRESS,PORT);
in=newBufferedReader(newInputStreamReader(socket.getInputStream()));
out=newPrintWriter(socket.getOutputStream(),true);
//向服务器端发送数据
out.println("接收到客户端的请求数据......");
Stringresponse=in.readLine();
System.out.println("Client:"+response);
}catch(Exceptione){
e.printStackTrace();
}finally{
if(in!=null){
try{
in.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
if(out!=null){
try{
out.close();
}catch(Exceptione){
e.printStackTrace();
}
}
if(socket!=null){
try{
socket.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
socket=null;
}
}
}
程序输出:
Server:
Serverstart...... Server:接收到客户端的请求数据......
Client:
Client:服务器端回送响应的数据。
同步非阻塞(NIO)
异步非阻塞(AIO)
以上这篇Java网络通信基础编程(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。