java通信例子

 写了一个javaSocket通信的例子,比较容易懂,主要是TCP协议的。下面是服务端的代码

  Java代码

  import java.io.IOException;

  import java.net.InetAddress;

  import java.net.Socket;

  public class ServerSocket {

  public static void main(String[] args) {

  beginSocket();

  }

  public static void beginSocket(){

  try {

  java.net.ServerSocket serverSocket=new java.net.ServerSocket(3456);

  InetAddress inta=serverSocket.getInetAddress().getLocalHost();

  System.out.println(inta.getHostAddress());

  while(true){

  Socket socket=serverSocket.accept();

  new HelloMessage(socket);

  }

  } catch (IOException e) {

  e.printStackTrace();

  }

  }

  }

  为了提高并发时的处理效率,对于每个请求,系统都新建一个线程处理。

  Java代码

  import java.io.BufferedReader;

  import java.io.InputStreamReader;

  import java.io.PrintWriter;

  import java.net.Socket;

  public class HelloMessage extends Thread {

  private Socket socket_ = null;

  public HelloMessage(Socket socket) {

  this.socket_ = socket;

  this.start();

  }

  public void run() {

  try {

  BufferedReader bReader = new BufferedReader(new InputStreamReader(

  this.socket_.getInputStream()));

  PrintWriter pWriter = new PrintWriter(this.socket_

  .getOutputStream());

  String requestStr = bReader.readLine();

  if (requestStr != null && !"".equals(requestStr)) {

  if (requestStr.equals("java")) {

  pWriter.println("your write is java");

  }

  if (requestStr.equals(".net")) {

  pWriter.println("your write is .net");

  }

  if (requestStr.equals("php")) {

  pWriter.println("your write is php");

  }

  if (requestStr.equals("end")) {

  pWriter.println("your write is end");

  }else{

  pWriter.println("your write is other");

  }

  }else{

  pWriter.println("your write is null");

  }

  pWriter.flush();

  pWriter.close();

  bReader.close();

  this.socket_.close();

  } catch (Exception e) {

  e.printStackTrace();

  }

  }

  }

  然后是客户端的代码。

  Java代码

  import java.io.BufferedReader;

  import java.io.IOException;

  import java.io.InputStreamReader;

  import java.io.PrintWriter;

  import java.net.Socket;

  import java.net.UnknownHostException;

  public class ClientSocket {

  public static void main(String[] args) {

  clientRequest();

  }

  private static void clientRequest() {

  try {

  while (true) {

  Socket clientSocket = new Socket("172.168.4.105", 3456);

  BufferedReader bReader = new BufferedReader(new InputStreamReader(

  System.in));

  System.out.println("please input java or .net or php or end");

  String strLine = bReader.readLine();

  if (strLine != null && !"".equals(strLine)) {

  PrintWriter pWriter = new PrintWriter(clientSocket

  .getOutputStream(), true);

  pWriter.println(strLine);

  BufferedReader br = new BufferedReader(

  new InputStreamReader(clientSocket.getInputStream()));

  String strResult = br.readLine();

  System.out.println(strResult);

  pWriter.flush();

  pWriter.close();

  clientSocket.close();

  }

  }

  } catch (UnknownHostException e) {

  e.printStackTrace();

  } catch (IOException e) {

  e.printStackTrace();

  }

  }

  }

  这样一个简单的TCP,Socket编程的原型就成了。简单介绍下:

  几个比较重要的API

  .Accept方法用于产生"阻塞",直到接受到一个连接,并且返回一个客户端的Socket对象实例。

  .getInputStream方法获得网络连接输入,同时返回一个IutputStream对象实例,。

  .getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。

 http://java.chinaitlab.com/net/811407.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值