`
bmladmin
  • 浏览: 29963 次
  • 性别: Icon_minigender_1
  • 来自: 四川成都
社区版块
存档分类
最新评论

Socket简单通信

 
阅读更多

最近感觉网络编程方面知道的比较少,今天做了一个小例子,就是客服端与服务器端的连接,使用了多线程,具体的代码如下:

服务器端:

package com.bmldyq.sockey.server;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class SocketServer {

 public static void main(String[] args) {
     new SocketServer().star();
 }

 public void star() {
  ServerSocket serverSocket = null;
  try {
   serverSocket = new ServerSocket(8888);
   while (true) {
    Socket socket = serverSocket.accept();
    Thread th = new Thread(new ServerHandler(socket));
    th.start();
   }
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

 public class ServerHandler extends Thread {

  private Socket socket;

  public ServerHandler(Socket socket) {
   this.socket = socket;
  }

  @Override
  public void run() {
   // 用于向客户端发送数据的输出流
   try {
    DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
    // // 接受客服端发过来的请求
    DataInputStream dis = new DataInputStream(socket.getInputStream());
    String msg=dis.readUTF();
    System.out.println("客服端:"+msg+" 已连接!");
    // 向客服端发送信息
    dos.writeUTF(msg+"服务器端正常连接");
   } catch (IOException e) {
    e.printStackTrace();
   }
  }

 }
}

客服端:

package com.bmldyq.sockey.client;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class Client {
 public static void main(String[] args) {
  new Client().connectionServer();

 }
 
 private void connectionServer(){
  Socket socket = null;
  System.out.println("请输入用户名:");
  Scanner sc = new Scanner(System.in);
  String uname = sc.next();
  System.out.println("请输入密码:");
  String upwd = sc.next();
  if (!uname.equals("") && !upwd.equals("")) {
   System.out.println("登陆成功,正在进行服务器连接...");
   try {
    socket = new Socket("localhost", 8888);
    DataOutputStream dos = new DataOutputStream(socket
      .getOutputStream());
    DataInputStream dis = new DataInputStream(socket
      .getInputStream());
    // 向服务器段写入请求
    dos.writeUTF(uname);
    System.out.println(dis.readUTF());
    connectionServer();
   } catch (UnknownHostException e) {
    e.printStackTrace();
   } catch (IOException e) {
    e.printStackTrace();
   }

  } else {
   System.out.println("登陆失败,系统将退出!");
   System.exit(0);
  }
 }
}

 

就是客服端输入用户信息进入服务器端的连接并且返回连接信息,比较简单

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics