客户端:
import java.io.*;
import java.net.*;
public class talkclient
{
public static void main(String args[])
{
try
{
Socket socket = new Socket("192.168.13.123",9999);
BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
PrintWriter os = new PrintWriter(socket.getOutputStream());
BufferedReader is = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
String readline;
while (!"bye".equals(readline=sin.readLine()))
{
//==============写服务端==================//
os.println(readline);
os.flush();
//System.out.println("Client:" + readline);
//==============读服务端==================//
System.out.println("服务端反馈:"+is.readLine());
}
String ss=is.readLine();
while(ss!=""){
System.out.println(ss);
}
os.close();
is.close();
socket.close();
}catch(Exception e)
{
System.out.println("Error" + e);
}
}
}
服务端:负责接收多个客户端的连接 ,然后交给多线程去处理
import java.io.*;
import java.net.*;
//引入了无关的类
import java.applet.Applet;
public class talkserver {
static int clientnum = 0; // 静态成员变量,记录当前客户的个数
public static void main(String args[]) {
ServerSocket server = null;
try {
server = new ServerSocket(9999);
} catch (IOException e1) {
e1.printStackTrace();
}
while(true){
try {
Socket socket = server.accept();
System.out.println("一个客户端连上来了....");
ServerThread thread=new ServerThread(socket);
//thread.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
多线程程序:
import java.io.*;
import java.net.*;
/**
* 服务器端逻辑线程
*/
public class ServerThread extends Thread {
Socket socket;
BufferedReader br=null;
PrintWriter os=null;
public ServerThread(Socket socket) {
this.socket = socket;
start(); //启动线程
}
public void run() {
BufferedReader is=null;
PrintWriter os=null;
try {
boolean flag=true;
//ServerSocket server = null;
//Socket socket = null;
//ServerSocket server = new ServerSocket(9999);
System.out.println("server listen on port 9999...");
//socket = server.accept();
is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
os = new PrintWriter(socket.getOutputStream());
while(flag){
System.out.println("-------------------");
//多线程
//new ServerThread(socket, clientnum).start();
//标准输入端读取一行
BufferedReader sin = new BufferedReader(new InputStreamReader(System.in));
String str;
String reply;
while(!"".equals(str=is.readLine())){
System.out.println(".....start...........");
System.out.println(str); //每写一行,就等着从客户端读进一行,
reply=sin.readLine();
os.println("服务端 说:"+reply); //写到客户端
os.flush();
System.out.println("......end.........");
}
System.out.println("out of while...");
//String line=sin.readLine();
os.println("server AAAAAAAAAAAAA"); //写到客户端
os.flush();
}
//****流如果关闭,socket也将会关闭,所以如果想在一个socket连接之内通讯*****//,
//***则应该在while之外关闭socket****//
//server.close();
} catch (Exception e) {
System.out.println("Error" + e);
}finally{
try {
is.close();
os.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 关闭流和连接
*/
private void close() {
try {
//关闭流和连接
os.close();
br.close();
socket.close();
} catch (Exception e) {
}
}
}