天天看点

Java套接字Socket编程-----服务器端和客户端

客户端和服务器端可以相互交信,在这里我实现了一对一的通讯,有这个基础了,我们就可以实现一对多的通信了。

那我们就来编程实现之.

首先要引用网络包

import java.io.*;

import java.net.*;

 //在这里初始化ServerSocket

  serverSocket=new ServerSocket(8000);

  socket=serverSocket.accept();

这样服务器端处理监听状态,一直监听客户端的连接.

//在这里初始化ServerSocket

  socket=new Socket(host,port);//host为服务器的IP地址,port为端口号,注意port号越大越好。0~65535

这样客户端就可以同服务器端相互通信了

这样服务器和客户端就建立了连接。

下面我来建立读写流方便调用

//构造一个返回值为BuffereReader读对象流的函数

 private BufferedReader getReader(Socket socket)throws IOException{

  InputStream socektIn=socket.getInputStream();

  return new BufferedReader(new InputStreamReader(socektIn));

 }

   //构造一个返回值为PrintWriter写对象流的函数 

 private PrintWriter getWriter(Socket socket) throws IOException{

  OutputStream socketOut=socket.getOutputStream();

  return new PrintWriter(socketOut,true);

 }

 这样就可以通过

   try {

    pw=getWriter(socket);

   } catch (IOException e1) {

    // 处理异常

    e1.printStackTrace();

   }

   pw.println(tt);

   }

这种方式将信息发送出去

通过

public void run() {

  // 在这里运行线程中的方法

  while(true){

   try {

    br=getReader(socket);

    String str;

    str=br.readLine();

    jta.append("客户端说: "+str+"/n");

   } catch (IOException e) {

    // 处理异常

    e.printStackTrace();

   }

  }

 }

因为我们不知道什么时候能够读到信息,所以用一个线程进行捕捉

并显示出来

当然不要在主函数中启动主线程

Server server=new Server();

  Thread th=new Thread(server);//初始化线程.

  th.start();//启动线程

这样就可以实现收发信息了。而客户端其实和服务器端差不多的方式收发信息,这里就不多说了。