import java.net.*;
import java.io.*;
public class TCP_ECHO
{
//ip位置
String hostname;
//port number
int portnumber;
//client端的socket
Socket clientSocket;
//存放user輸入的字串
String sentence;
//存放server回傳的字串
String modifiedSentence;
//讓user輸入資料的buffer
BufferedReader inFromUser;
//
DataOutputStream outToServer;
//server傳過來的資料,所暫放的buffer
BufferedReader inFromServer;
TCP_ECHO()
{
hostname = "140.136.149.242";
portnumber = 7;
}
TCP_ECHO(String newHostname,int newPortnumber)
{
hostname = newHostname;
portnumber = newPortnumber;
}
public void connectionstart()throws Exception
{
//此變數檢查輸入資料是否有'.'
boolean end = false;
try
{
//連結server
clientSocket= new Socket(hostname,portnumber);
}
catch (Exception ex)
{
//如果連結錯誤,出現錯誤訊息
System.out.println("連結失敗 time out");
}
//user開始輸入資料
userinput();
while(true)
{
//檢查user輸入的資料是否有'.',有的話end為true
for(int i=0;i<sentence.length();i++)
{
if(sentence.charAt(i) == '.')
{
System.out.println("結束輸入");
//關閉socket
clientSocket.close();
end = true;
}
}
//如果end為false(代表輸入的字串沒有'.'字元),就繼續輸入
if(!end)
{
userinput();
}
//否則跳出此迴圈(也代表tcp echo結束)
else
{
break;
}
}
}
public void userinput()throws Exception
{
System.out.println("請輸入您想要輸入的文字");
//user輸入字串給inFromUser這個buffer
inFromUser = new BufferedReader(new InputStreamReader(System.in));
//建立一個附屬於socket的output stream
outToServer = new DataOutputStream(clientSocket.getOutputStream());
//建立一個input stream 將未來接收到的封包,放到inFormServer這個buffer
inFromServer =
new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
//讀取inFromUser這個buffer的資料(一行)
sentence = inFromUser.readLine();
//將sentence的字串 傳給server
outToServer.writeBytes(sentence + "\n");
//將在inFromServer這個buffer 讀取字串
modifiedSentence = inFromServer.readLine();
//將server傳回的資料印出
System.out.println("FROM SERVER: " + modifiedSentence);
}
}