ソケット長接続例(server&client)
3765 ワード
詳細
最近テストをして、簡単なsocket長接続のテスト例を書きました.次はコードです.
SocketServer.java
SocketClient:
最近テストをして、簡単なsocket長接続のテスト例を書きました.次はコードです.
SocketServer.java
package socket;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket=new ServerSocket(1111);
Socket socket=serverSocket.accept();
while(true){//
try {
Thread.sleep(3000);//
} catch (InterruptedException e1) {
e1.printStackTrace();
}
if (socket !=null){
InputStream is = null;
OutputStream os = null;
try {
String ip = socket.getInetAddress().toString().replace("/", "");
System.out.println("====socket.getInetAddress()====="+ip);
socket.setKeepAlive(true);
is = socket.getInputStream();
os = socket.getOutputStream();
System.out.println(" ");
byte[] buff = new byte[5];
is.read(buff);
String tempdata =new String(buff); // StreamEazyUse.getContent(is);
if (tempdata.equals("quit1")) {
System.out.println(" , ::"+tempdata);
continue;
}
System.out.println(" :"+tempdata);
os.write("world".getBytes());
os.flush(); //
// is.close();
// os.close();
}catch(Exception e){
System.out.println(" , ");
if (is!= null)
is.close();
if (os!= null)
os.close();
e.printStackTrace();
}
}
}
}
}
SocketClient:
package socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class SocketClient {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket socket = new Socket("localhost",1111);
if (socket.isConnected()){
OutputStream os =null;
InputStream is = null;
while (true) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String in = br.readLine();
os = socket.getOutputStream();
os.write(in.getBytes());//"hello".getBytes());
os.flush();
is = socket.getInputStream();
byte[] resp = new byte[5];
is.read(resp);
System.out.println("response:" + new String(resp));
} catch (Exception e) {
e.printStackTrace();
if(os != null)
os.close(); // , os, broken pipe
if(is != null)
is.close();
} finally {
System.out.println("do nothing");
}
}
}
}
}