读书人

Socket容易通信

发布时间: 2012-08-25 10:06:20 作者: rapoo

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);
??}
?}
}

?

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

读书人网 >编程

热点推荐