找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 3106|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

JAVA socket 實(shí)現(xiàn)同時(shí)讀寫(xiě)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:341350 發(fā)表于 2018-5-30 14:25 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
package cn.com.socket;


import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.net.ServerSocket;
import java.net.Socket;
/**
* 服務(wù)端同時(shí)讀和寫(xiě)
* @author Administrator
*
*/
public class ServerDemo1 {


public static void main(String[] args) throws IOException {
//為了簡(jiǎn)單起見(jiàn),所有的異常信息都往外拋  
     int port = 8899;  
     //定義一個(gè)ServerSocket監(jiān)聽(tīng)在端口8899上  
     ServerSocket server = new ServerSocket(port);  
     //server嘗試接收其他Socket的連接請(qǐng)求,server的accept方法是阻塞式的  
     Socket socket = server.accept();  
     //跟客戶端建立好連接之后,我們就可以獲取socket的InputStream,并從中讀取客戶端發(fā)過(guò)來(lái)的信息了。  
     Reader reader = new InputStreamReader(socket.getInputStream());  
     char chars[] = new char[64];  
     int len;  
     StringBuilder sb = new StringBuilder();  
     String temp;  
     int index;  
     while ((len=reader.read(chars)) != -1) {  
        temp = new String(chars, 0, len);  
        if ((index = temp.indexOf("eof")) != -1) {//遇到eof時(shí)就結(jié)束接收  
           sb.append(temp.substring(0, index));  
           break;  
        }  
        sb.append(temp);  
     }  
     System.out.println("我是服務(wù)器,客戶端說(shuō): " + sb);  
     //讀完后寫(xiě)一句  
     Writer writer = new OutputStreamWriter(socket.getOutputStream());  
     writer.write("Hello Client.");  
     writer.flush();  
     writer.close();  
     reader.close();  
     socket.close();  
     server.close();  
  }  

}


package cn.com.socket;


import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.net.Socket;
import java.net.UnknownHostException;
/**
* 客戶端同時(shí)讀和寫(xiě)
* @author Administrator
*
*/
public class ClientDemo1 {


public static void main(String[] args) throws UnknownHostException, IOException {
  //為了簡(jiǎn)單起見(jiàn),所有的異常都直接往外拋  
    String host = "localHost";  //要連接的服務(wù)端IP地址  
    int port = 8899;   //要連接的服務(wù)端對(duì)應(yīng)的監(jiān)聽(tīng)端口  
    //與服務(wù)端建立連接  
    Socket client = new Socket(host, port);  
     //建立連接后就可以往服務(wù)端寫(xiě)數(shù)據(jù)了  
    Writer writer = new OutputStreamWriter(client.getOutputStream());  
     writer.write("Hello Server.");  
     writer.write("eof");  
     writer.flush();  
     //寫(xiě)完以后進(jìn)行讀操作  
    Reader reader = new InputStreamReader(client.getInputStream());  
     char chars[] = new char[64];  
     int len;  
     StringBuffer sb = new StringBuffer();  
     String temp;  
     int index;  
     while ((len=reader.read(chars)) != -1) {  
        temp = new String(chars, 0, len);  
        if ((index = temp.indexOf("eof")) != -1) {  
           sb.append(temp.substring(0, index));  
           break;  
        }  
        sb.append(new String(chars, 0, len));  
     }  
     System.out.println("我是客戶端,服務(wù)器說(shuō): " + sb);  
     writer.close();  
     reader.close();  
     client.close();  
  }  


}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表