日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 对象流传输socket_Java Socket(二)使用TCP传输对象

發布時間:2025/3/11 java 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 对象流传输socket_Java Socket(二)使用TCP传输对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在Java Socket使用TCP的基礎上,通過ObjectInputStream和ObjectOutputStream來讀寫對象。

//傳輸的對象,需要序列化

package socket;

import java.io.Serializable;

public class MsgTO implements Serializable

{

private static final long serialVersionUID = 1L;

private String msg;

private int status;

private String response;

public String getMsg() {

return msg;

}

public void setMsg(String msg) {

this.msg = msg;

}

public int getStatus() {

return status;

}

public void setStatus(int status) {

this.status = status;

}

public String getResponse() {

return response;

}

public void setResponse(String response) {

this.response = response;

}

}

//客戶端

public class SocketClient

{

private final Logger logger = LoggerFactory.getLogger(getClass());

public static void main(String args[]) throws Exception

{

Socket socket = new Socket("192.168.100.236", 2221);

System.out.println("socket created");

//send request

OutputStream os = socket.getOutputStream();

ObjectOutputStream oos = new ObjectOutputStream(os);

System.out.println("send hello");

MsgTO obj = new MsgTO();

obj.setMsg("Hello");

oos.writeObject(obj);;

oos.flush();

socket.shutdownOutput();

//receive response

InputStream is = socket.getInputStream();

ObjectInputStream ois = new ObjectInputStream(is);

obj = (MsgTO) ois.readObject();

System.out.println("Received:"+obj);

if(obj != null)

{

System.out.println("status="+obj.getStatus());

System.out.println("response="+obj.getResponse());

}

socket.shutdownInput();

//close resource

oos.close();

os.close();

socket.close();

}

}

//服務端

public class SocketServer

{

public static void main(String args[]) throws Exception

{

ServerSocket serverSocket = new ServerSocket(2221);

System.out.println("server socket created");

//for multiple clients

while (true) //循環監聽,等待客戶端的連接

{

System.out.println("***");

Socket socket = serverSocket.accept();

ServerHandler serverHandler = new ServerHandler(socket);

serverHandler.setPriority(4);//設置線程的優先級來保證運行速度, 范圍為[1,10], 默認為5.

serverHandler.start();

}

}

}

class ServerHandler extends Thread

{

private final Logger logger = LoggerFactory.getLogger(getClass());

//與本線程相關的Socket

private Socket socket = null;

public ServerHandler(Socket socket)

{

this.socket = socket;

}

//線程執行的操作

//for object

public void run()

{

InputStream is = null;

ObjectInputStream ois = null;

OutputStream os = null;

ObjectOutputStream oos = null;

try

{

//receives request

is = socket.getInputStream();

ois = new ObjectInputStream(is);

MsgTO obj = (MsgTO) ois.readObject();

logger.debug("received:" + obj);

if(obj!=null)

{

logger.debug("status=" + obj.getStatus());

logger.debug("msg=" + obj.getMsg());

}

socket.shutdownInput();

//deal is still to do

//send response

os = socket.getOutputStream();

oos = new ObjectOutputStream(os);

logger.debug("send response");

if(obj != null)

{

obj.setStatus(0);

obj.setResponse("123");

oos.writeObject(obj);

}

oos.flush();

socket.shutdownOutput();

} catch (Exception ex)

{

logger.error(ex.getMessage());

ex.printStackTrace(System.out);

} finally

{

try //close resource

{

oos.close();

ois.close();

is.close();

socket.close();

} catch (Exception ex)

{

ex.printStackTrace(System.out);

}

}

}

}

總結

以上是生活随笔為你收集整理的java 对象流传输socket_Java Socket(二)使用TCP传输对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。