首先是client端的代码
package com.baidu.demo1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class Test2 {
public static void main(String []args){
try {
Socket socket=new Socket("localhost",8888);
OutputStream os=socket.getOutputStream();
PrintWriter pw=new PrintWriter(os);
pw.write("用户名:zhizhangxi;密码:111");
pw.flush();//将数据提交
socket.shutdownOutput();
InputStream is=socket.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));//加入缓冲,提高读取速度
String str=null;
while((str=br.readLine())!=null){
System.out.println(str);
//str=br.readLine();
}
//pw.flush();
socket.shutdownInput();
pw.close();
os.close();
socket.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
server端的代码
package com.baidu.demo1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
public class Test1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
ServerSocket serverSocket=new ServerSocket(8888);
System.out.println("服务器开始运行!");
int count=0;
while(true){
Socket socket=serverSocket.accept();
ServerThread serverThread=new ServerThread(socket);
serverThread.start();
count++;
System.out.println("客户端的数量为: "+count);
InetAddress address=socket.getInetAddress();
System.out.println("客户端的ip地址: "+address.getHostAddress());
}//反复监听客户端的请求,如果有请求的话,那么就创建一个线程。
//serverSocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
线程的代码
package com.baidu.demo1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
public class ServerThread extends Thread {
Socket socket=null;
public ServerThread(Socket socket){
this.socket=socket;
}
public void run(){
InputStream is=null;
InputStreamReader isr=null;
BufferedReader br=null;
OutputStream os=null;
PrintWriter pr=null;
try {
is = socket.getInputStream();//获得字节流
isr = new InputStreamReader(is);//将字节流转化为字符流
br = new BufferedReader(isr);
String str=null;
while((str=br.readLine())!=null){
System.out.println("我是服务器,客户端说 "+str);
}
socket.shutdownInput();
os = socket.getOutputStream();
pr = new PrintWriter(os);
pr.write("欢迎您!");//写入操作
pr.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//socket.shutdownOutput();
if(pr!=null)
pr.close();
try {
if(os!=null)
os.close();
if(br!=null)
br.close();
if(isr!=null)
isr.close();
if(is!=null)
is.close();
if(socket!=null)
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
此代码参考学习慕课网的java Socket网络教程而写。