java基础socket通信

socket通信:

服务端程序:

利用ServerSocket编写服务端

首先创建ServerSocket对象

服务端程序必须暴露出端口,端口最好在1024

以上,最大不超过65535

ServerSocket server=newServerSocket(1898);

服务器等待客户端来请求,有请求,则往下走

SocketclientSocket=server.accept();

分别得到输入输出流

InputStream in=clientSocket.getInputStream();

OutputStreamout=clientSocket.getOutputStream();

通过输入输出流得到读写操作的接口

 BufferedReaderreader=new  

 BufferedReader(newInputStreamReader(in));

 PrintWriter writer=newPrintWriter(out,true);

得到客户端的输入内容

 StringclientStr=reader.readLine();

 if(clientStr!=null){

 System.out.println(clientStr);

 }

//给客户端发送内容

writer.println("收到您的来信");

最后一步:需要关闭各种流和客户端socket

 reader.close();

 writer.close();

 clientSocket.close();

客户端程序:

客户端请求服务端程序,必须给出ip和端口。

首先创建客户端Socket

Socket socket=newSocket("127.0.0.1",1898);

同样,得到输入输出流

OutputStreamout=socket.getOutputStream();

InputStreamin=socket.getInputStream();

通过输入输出流,得到读写对象

 PrintWriter writer=newPrintWriter(out,true);

 BufferedReaderreader=new BufferedReader(new InputStreamReader(in));

有了写内容的对象,就可以给服务端发送内容

 writer.println(“你好”);

有了读内容的对象,就可以读取服务端的内容

 StringserverMsg=reader.readLine();

最后也必须关掉各种流和socket连接

reader.close();

 writer.close();

socket.close();

socket通信:

服务端代码

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.PrintWriter;

import java.net.InetAddress;

import java.net.ServerSocket;

import java.net.Socket;

import java.net.SocketAddress;

import java.util.HashMap;

import java.util.Map;

publicclass ServerTest {

/**

 * 建立Socket服务端

 * @param args

 * @throws IOException

 */

publicstaticvoid main(String[] args) throws IOException {

// 创建服务端

// 端口最好大于1024 必须小于65535

  ServerSocketserver=new ServerSocket(1998);

  System.out.println("=====服务器启动======");

while(true){

// 等待客户端的请求,没有请求,就不会继续往下执行

//阻塞方法,在这里等待

   SocketclientSocket=server.accept();

   SocketAddressclientAddress=clientSocket.getRemoteSocketAddress();

   InputStreamin=clientSocket.getInputStream();

   OutputStreamout=clientSocket.getOutputStream();

//通过输入输出流得到读写操作的接口

   BufferedReaderreader=new BufferedReader(new InputStreamReader(in));  

   PrintWriterwriter=new PrintWriter(out,true);

   Stringclientmsg=reader.readLine();

   System.out.println("客户发送的信息是:" + clientmsg);

if(clientmsg!=null){

     writer.println(clientmsg);

   }

// 关闭reader

   reader.close();

// 关闭writer

   writer.close();

// 关闭socket连接

   clientSocket.close();

  }

 }

}

要先启动服务器

客户端代码

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.PrintWriter;

import java.net.Socket;

import java.net.UnknownHostException;

publicclass ClientTest {

/**

 * 客户端socket

 * @param args

 * @throws IOException

 * @throws IOException

 */

publicstaticvoid main(String[] args) throws IOException {

  Socketsocket=new Socket("127.0.0.1",1998);

  OutputStreamout=socket.getOutputStream();

  InputStreamin=socket.getInputStream();

  PrintWriterwriter=new PrintWriter(out,true);

  BufferedReaderreader=new BufferedReader(new InputStreamReader(in));

  writer.println("hello 啊 java");

  StringserverMsg=reader.readLine();

if(serverMsg!=null){

   System.out.println("服务端来信: "+serverMsg);

  }

  reader.close();

  writer.close();

  socket.close();

 }

}


你可能感兴趣的:(java基础,server,服务端,客户端)