读书人

知识点收拾之Java Socket

发布时间: 2012-09-01 09:33:03 作者: rapoo

知识点整理之Java Socket

依旧是自己平时用到的一些东西的整理

?

Socket客户端:

public class SocketClient {public static void main(String[] args) {Socket socket = null;OutputStream out = null;InputStream in = null;try {socket = new Socket();// connect and set timeoutsocket.connect(new InetSocketAddress("127.0.0.1",8333), 2000);in = socket.getInputStream();out = socket.getOutputStream();out.write("abcd".getBytes());out.flush();} catch (IOException e) {e.printStackTrace();} finally {try {in.close();out.close();socket.close();} catch (IOException e) {e.printStackTrace();}}}}

?

Socket服务器端:

public class SocketServer {public static void main(String[] args) {try {// 实例化sSocket,参数为端口号portServerSocket serverSocket = new ServerSocket(8333);while (true) {// 实例化SocketSocket socket = serverSocket.accept();// 新建线程TCPServer,并启动new Thread(new ServerSocketTask(socket)).start();}} catch (IOException e) {e.printStackTrace();}}}

?

public class ServerSocketTask implements Runnable {private Socket socket;public ServerSocketTask(Socket socket) {this.socket = socket;}@Overridepublic void run() {// 定义输出流OutputStream output = null;// 定义输入流InputStream input = null;try {// 初始化输入流input = this.socket.getInputStream();// 初始化输出流output = socket.getOutputStream();String message = null;while (true) {// 定义byte[]数组,大小为1024;byte[] buf = new byte[1024];// 从输入流中读取输入存入字节数组int len = input.read(buf);// 将字节数组转换成字符串message = new String(buf,0,len);//* 实际使用中这里要用System.arrayCopy把byte数组拼起来,判断到结束条件后再breakSystem.out.println(message);// 向输出流写入SUCCESS返回给客户端output.write("SUCCESS".getBytes());// 输出流flushoutput.flush();// 跳出循环break;}} catch (IOException e) {e.printStackTrace();}}}

读书人网 >编程

热点推荐