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);
}
}
}
就是客服端输入用户信息进入服务器端的连接并且返回连接信息,比较简单