socket简单通讯

package zl.socket.server;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

public static int portNo = 3333;
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO 自动生成方法存根

ServerSocket s = new ServerSocket(portNo);

System.out.println("The Server is start:" + s);
Socket socket = s.accept() ;
System.out.println("accept the client :" + socket) ;

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

OutputStream out = socket.getOutputStream();

PrintWriter write = new PrintWriter(out);
while(true){
String str = in.readLine();
if("byebye".equals(str))
break;
System.out.println("in server reveived the info:"+str);
write.write(str);
write.write("\n");
write.flush();
}

socket.close();
s.close();

}

}



package zl.socket.client;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {

/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO 自动生成方法存根
InetAddress addr = InetAddress.getByName("localhost");

Socket socket = new Socket(addr,3333);

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

OutputStream out = socket.getOutputStream();

PrintWriter write = new PrintWriter(out);

write.write("hello");
write.write("\n");
write.flush();

String str = in.readLine();

System.out.println(str);

write.write("byebye");
write.write("\n");
write.flush();

out.close();

socket.close();
}


}


注意 bufferedreader 的readLine 方法遇到回车符号结束,所以要在发送的时候记得在数据结尾加上回车标记,不然客户端和服务端会同时阻塞

猜你喜欢

转载自zjxs-sky100.iteye.com/blog/1608136
今日推荐