Socket编程之TCP
来源:互联网 发布:js如何获取span的值 编辑:程序博客网 时间:2024/06/05 14:46
客户端和服务器端通信,模拟用户登录功能。
Socket的通信步骤
1,创建ServerSocket和Socket
2,打开连接到Socket的输入/输出流
3,按照协议对socket就行读/写操作
4,关闭输入输出流、关闭Socket
服务器端:
1,创建ServerSocket对象,绑定监听端口
2,通过accept()方法监听客户端请求
3, 连接建立后,通过输入流读取客户端放送的请求信息
4,通过输出流向客户端发送响应信息
5,关闭相关资源
客户端:
1,创建Socket对象,指明需要连接的服务器的地址和端口号
2,连接建立后,通过输出流向服务器端发送请求信息
3,通过输入流获取服务器响应的信息
4,关闭响应资源
服务器端代码:
public class Server {
private static String username = "bl";
private static String pwd ="1";
public static void main(String[] args) throws IOException {
//1,创建ServerSocket,指定端口并监听此端口
ServerSocket serverSocket = new ServerSocket(10086);
//2,调用accept方法开始监听,等待客户端的连接
Socket socket = serverSocket.accept();
//3,获取输入流,并读取客户端信息
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String info = null;
info = br.readLine();
// while((info = br.readLine())!=null){
System.out.println("我是服务器,客户端信息:"+info);
// }
socket.shutdownInput();//关闭输入流
//4,获取输出流,响应客户端的请求
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os);
if(info.equals(username+" "+pwd)){
pw.write(username + "恭喜你登录成功!");
}else{
pw.write("用户名或密码错误!");
}
// pw.write("欢迎您!");
pw.flush();
//5,关闭资源
pw.close();
os.close();
br.close();
isr.close();
is.close();
socket.close();
serverSocket.close();
}
}
客户端代码:
public class client {
public static void main(String[] args) throws UnknownHostException, IOException {
//1,创建客户端Socket,指定服务器地址和端口
Socket socket = new Socket("localhost", 10086);
//2,获取输出流,向服务器端发送信息
OutputStream os = socket.getOutputStream();//字节输出流
PrintWriter pw = new PrintWriter(os);//将输出流包装成打印流
Scanner input = new Scanner(System.in);
String userName =null;
String pwd = null;
System.out.print("请输入用户:");
userName = input.next();
System.out.print("请输入密码:");
pwd = input.next();
pw.write(userName+" "+pwd);
pw.flush();
socket.shutdownOutput();
//3,获取输入流,并读取服务器的响应信息
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String info = null;
while((info=br.readLine())!=null){
System.out.println("我是客户端,服务器说:"+info);
}
//4、关闭资源
br.close();
is.close();
pw.close();
os.close();
socket.close();
input.close();
}
}
参考博客:http://developer.51cto.com/art/201509/490775.htm#topx
- socket编程之tcp
- Socket编程之TCP
- java-Socket编程之TCP
- C# Socket编程之TCP
- 网络编程之Socket ---TCP编程
- Linux下Socket编程之TCP原理
- Linux下Socket编程之TCP应用
- 【Linux】Linux C socket 编程之TCP
- linux socket编程之TCP与UDP
- linux socket编程之TCP与UDP
- java Socket编程之TCP练习
- Java Socket 编程学习之 TCP
- android 之 socket编程(TCP&UDP)
- linux socket编程之TCP与UDP .
- linux socket编程之TCP与UDP
- 网络socket编程之TCP示例程序
- socket 编程之TCP服务端与客户端
- linux socket编程之TCP与UDP
- The number of method references in a .dex file cannot exceed 64K.
- hokuyo激光雷达跑cartographer
- 网络流24题20. 深海机器人问题
- html中offsetTop、clientTop、scrollTop、offsetTop各属性介绍
- 抓取图片及时保存
- Socket编程之TCP
- 深入理解函数内部原理(2)——对一个函数实例进行深入的分析
- pycharm
- ViewPager+Fragment组合的预加载和懒加载
- 移动通信技术发展
- static关键字
- 在linux上发布项目
- 实例 关于自定义Push Pop过渡
- 正则表达式