##编写javaSocket编程的几种结构
- 直接使用Socket编程实现
- 使用Socket,再结合java的多线程编程
- 使用NIO中的非阻塞(Non Blocking) Socket再结合java的多线程编程
- 使用Jdk自带的或者第三方的线程池技术对线程进行管理,提高多线程的执行效率
- 使用开源的java Socket开发框架,例如:mina和cindy框架。
Java网络编程主要使用java.net包
##执行演示网络代码的时候,要先运行服务端,再运行客户端。
###服务端:
public class TCPserver{
static void print(String str){
System.out.println(str);
}
public static void main(String[]args){
print("服务器开启成功!");
java.net.ServerSocket server;
java.net.Socket client;
try{
server=new java.net.ServerSocket(5555);
// while(true){
client=server.accept();
print("一个客户端连接成功!");
//接受客户端的信息
java.io.DataInputStream dis=new java.io.DataInputStream(client.getInputStream());
String str= dis.readUTF();
print(str);
//给客户端发送信息!
java.io.DataOutputStream dos=new java.io.DataOutputStream(client.getOutputStream());
dos.writeUTF("你连接成功了!");
dis.close();
dos.close();
client.close();
print("客户端断开连接!");
// }
}catch(java.io.IOException ex){
ex.printStackTrace();
}
}
}
###客户端
public class TCPclient{
static void print(String str){
System.out.println(str);
}
public static void main(String[] args)
{
print("客户端开启成功!");
try{
java.net.Socket client=new java.net.Socket("127.0.0.1",5555);
print("客户端连接成功!");
String str=javax.swing.JOptionPane.showInputDialog(null,"请输入您要发送的内容!","提示",0);
//给服务端发送信息
java.io.DataOutputStream dos=new java.io.DataOutputStream(client.getOutputStream());
dos.writeUTF(str);
//接受服务端的信息
java.io.DataInputStream dis=new java.io.DataInputStream(client.getInputStream());
print(dis.readUTF());
dos.close();
dis.close();
client.close();
print("客户端连接断开!");
}
catch(java.io.IOException ex){
ex.printStackTrace();
}
}
}