一、服务器端
1.建立一个服务器socket(ServerSocket) ,绑定指定端口并开始监听;
2.使用accept()方法阻塞等待监听,获得新的链接;
3.获得输入、输出流;
4.在已有的协议上产生会话;
5.使用close()方法关闭流和Socket
代码如下:
package pb.socket.loginStr;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import org.omg.CORBA.portable.InputStream;
/**
* 服务器端,需要ServerSocket类
* @author ghp
*
*/
public class LoginServer {
/**
* @param args
*/
public static void main(String[] args) {
try {
//1.建立一个服务器socket(ServerSocket) 绑定指定端口并开始监听
ServerSocket serversocket = new ServerSocket(8800);
//2.使用accept()方法阻塞等待监听,获得新的链接
Socket socket =serversocket.accept();
//3.获得输入流
java.io.InputStream is= socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
//获取输出流
OutputStream os= socket.getOutputStream();
PrintWriter pw = new PrintWriter(os);
//4.读取用户输入信息
String info=null;
while(!((info =br.readLine())==null )){
System.out.println("我是服务器,用户信息为:"+info);
}
//给用户一个响应
String reply = "welcome.";
pw.write(reply);
pw.flush();
//5.关闭资源
os.close();
pw.close();
br.close();
is.close();
socket.close();
serversocket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
二、客户端
1.建立客户端Socket链接,指定服务器的位置及端口
.2.得到Socket的读写流
3.利用流按照一定的协议对Socket进行读/写操作
4.使用close()方法关闭流和Socket
代码如下:
package pb.socket.loginStr;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
/**
* 客户端,需要Socket类
* @author ghp
*
*/
public class LoginClient {
public static void main(String[] args) {
try {
//1.建立客户端Socket链接,指定服务器的位置及端口
Socket socket = new Socket("localhost",8800);
//2.得到Socket的读写流
OutputStream os= socket.getOutputStream();
PrintWriter pw = new PrintWriter(os);
//输入流
java.io.InputStream is= socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
//3.利用流按照一定的协议对Socket进行读写操作
String info="用户名名为:Tom,用户密码:123456";
pw.write(info);
pw.flush();
socket.shutdownOutput();
//接受服务器的响应,并打印
String reply=null;
while(!((reply =br.readLine())==null )){
System.out.println("我是客户端,服务器的响应为:"+reply);
}
//4.关闭资源
br.close();
is.close();
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();
}
}
}