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;
/**
* 服務端同時讀和寫
* @author Administrator
*
*/
public class ServerDemo1 {
public static void main(String[] args) throws IOException {
//為了簡單起見,所有的異常信息都往外拋
int port = 8899;
//定義一個ServerSocket監聽在端口8899上
ServerSocket server = new ServerSocket(port);
//server嘗試接收其他Socket的連接請求,server的accept方法是阻塞式的
Socket socket = server.accept();
//跟客戶端建立好連接之后,我們就可以獲取socket的InputStream,并從中讀取客戶端發過來的信息了。
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時就結束接收
sb.append(temp.substring(0, index));
break;
}
sb.append(temp);
}
System.out.println("我是服務器,客戶端說: " + sb);
//讀完后寫一句
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;
/**
* 客戶端同時讀和寫
* @author Administrator
*
*/
public class ClientDemo1 {
public static void main(String[] args) throws UnknownHostException, IOException {
//為了簡單起見,所有的異常都直接往外拋
String host = "localHost"; //要連接的服務端IP地址
int port = 8899; //要連接的服務端對應的監聽端口
//與服務端建立連接
Socket client = new Socket(host, port);
//建立連接后就可以往服務端寫數據了
Writer writer = new OutputStreamWriter(client.getOutputStream());
writer.write("Hello Server.");
writer.write("eof");
writer.flush();
//寫完以后進行讀操作
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("我是客戶端,服務器說: " + sb);
writer.close();
reader.close();
client.close();
}
}
|