标签:ext 网络 log rgs 结束 exce 死循环 www. new
一个 HelloWord 级别的 Java Socket 通信的例子。通讯过程:
        先启动 Server 端,进入一个死循环以便一直监听某端口是否有连接请求。然后运行 Client 端,客户端发出连接请求,服务端监听到这次请求后向客户端发回接受消息,连接建立,启动一个线程去处理这次请求,然后继续死循环监听其他请求。客户端输入字符串后按回车键,向服务器发送数据。服务器读取数据后回复客户端数据。这次请求处理完毕,启动的线程消亡。如果客户端接收到 "OK" 之外的返回数据,会再次发送连接请求并发送数据,服务器会为这次连接再次启动一个线程来进行响应。。。直到当客户端接收到的返回数据为 "OK" 时,客户端退出。
Java中重点之一就是服务器与客户端的连接,因为是在同一台PC上,所以就设置服务器的地址为“localhost”,注意,我当时试着设置其他名称,但都不行,这个原因还请老司机告一下。另外还要注意,服务端先于客户端运行,废话不多说,上代码了:
客户端:
按 Ctrl+C 复制代码
package WebProgramingDemo;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class SocketDemo {
    /**
     * @param args
     * @throws IOException 
     * @throws UnknownHostException 
     */
    public static void main(String[] args) throws  IOException {
        Socket s=new Socket("192.168.2.103",10002);
        OutputStream out=s.getOutputStream();
        out.write("Java".getBytes());
        InputStream is=s.getInputStream();
        byte buf[]=new byte[1024];
        int len=is.read(buf);
        System.out.println(new String(buf,0,len));
        s.close();
    }
}
按 Ctrl+C 复制代码
服务端:
按 Ctrl+C 复制代码
package WebProgramingDemo;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerSocketDemo {
    /**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        ServerSocket ss = new ServerSocket(10002);
        Socket s = ss.accept();
        String ip = s.getInetAddress().getHostAddress();
        System.out.println(ip + "....connected....");
        InputStream in = s.getInputStream();
        int len = 0;
        byte[] buf = new byte[1024];
        len = in.read(buf);
        System.out.println(new String(buf, 0, len));
        OutputStream os=s.getOutputStream();
        os.write("收到".getBytes());
        os.close();
        s.close();
        ss.close();
    }
}
按 Ctrl+C 复制代码
http://www.cnblogs.com/ysw-go/p/5323357.html
服务器修改后的代码:
package test;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class ServerSocketDemo {
    /**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
    	  
    	ServerSocket ss = new ServerSocket(10002);
          Socket  s = ss.accept();
      
        while(true)
        {
        	
        String ip = s.getInetAddress().getHostAddress();
       // System.out.println(ip + "....connected....");
        InputStream in = s.getInputStream();
        int len = 0;
        byte[] buf = new byte[1024];
        len = in.read(buf);
        System.out.println(new String(buf, 0, len));
        OutputStream os=s.getOutputStream();
        Scanner scan=new Scanner(System.in);
        String s1=scan.next();
        os.write(s1.getBytes());
       // os.write("收到".getBytes());
 
      //  os.close();
       // s.close();
       // ss.close();
        }
      
      
    }
}
客户端代码修改后:
package test2;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class SocketDemo {
    /**
     * @param args
     * @throws IOException 
     * @throws UnknownHostException 
     */
    public static void main(String[] args) throws  IOException {
    	
        
    	  Socket s=new Socket("localhost",10002);
        while(true)
        {
        	 
               OutputStream out=s.getOutputStream();
        Scanner scan=new Scanner(System.in);
        String s1=scan.next();
        out.write(s1.getBytes());
        //out.write(s1.getBytes());
        InputStream is=s.getInputStream();
        byte buf[]=new byte[1024];
        int len=is.read(buf);
        System.out.println(new String(buf,0,len));
       // s.close();
          }
    }
}
服务器先开启,然后开启客户端,然后客户必须先发消息用套子链接服务器,然后服务器才发消息回馈客户端。一次通信结束。客户端的输出对应服务器的输入,服务器的输出对应客户端的输入。
java 网络编程 TCP协议 java 服务器和客户端 java socket编程
标签:ext 网络 log rgs 结束 exce 死循环 www. new
原文地址:http://www.cnblogs.com/tianzijiaozi/p/7342778.html