Java Socket示例 双向通信(本机和内网测试通过)
(2012-07-07 19:44:20)
标签:
javasocket源代码杂谈 |
PS:从论文上看到的例子, 调了我N久才调好,我太菜了~
论文中只能是客户端给服务器发送数据。调通之后又在网上找到参考,修改之后可以双向的通信,不过只能是客户端发一句,服务器发一句,然后在客户端发,不能客户端连着发很多条。(还有待改进)
}
}
}
}
}
}
}
}
}
}
}
}
服务器端程序:
import java.io.DataInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
public class MinimalServerr {
public static void main(String[] args){
ServerSocket server=null;
Socket socket;
String s="It is a world of
Java.";
String ss;
InputStream is;
OutputStream os;
DataInputStream dis;
PrintStream ps;
try{
server=new ServerSocket(11885);
//设置监听的端口
catch (Exception e){
System.out.println("Error:"+e);
try{
socket=server.accept(); //监听窗口,等待连接
System.out.printf("客户端连接成功:\n%s\n", socket.toString());
//获得对应socket的输入/输出流
is=socket.getInputStream();
os=socket.getOutputStream();
//建立数据流
dis=new DataInputStream(is);
ps=new PrintStream(os);
DataInputStream in=new DataInputStream(System.in);
while(true){
s=dis.readLine();
//读入从客户端传来的字符串
System.out.println("user say:"+s);
//打印字符串
if (s.trim().equals("BYE")){
System.out.println("断开连接");
break;
ss=in.readLine();
//读取用户在服务器端输入的字符串
ps.println(ss);
//将输入的字符串传给客户端
if (ss.trim().equals("BYE")){
System.out.println("断开连接");
break;
dis.close(); //关闭数据输入流
ps.close();
//关闭数据输出流
is.close(); //关闭输入流
os.close(); //关闭输出流
socket.close(); //关闭socket
catch(Exception e){
System.out.println("Error:"+e);
}
}
客户端程序:
import java.io.DataInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
public class MinimalClientt {
public static void main(String[] args){
Socket socket;
String s="It is a world of Java.";
String ss;
InputStream is;
OutputStream os;
DataInputStream dis;
PrintStream ps;
try{
socket=new Socket("192.167.1.103",11885);
//设置服务器IP地址和端口号,注意端口号
//要与服务器保持一致。
System.out.println("连接服务器成功!");
is=socket.getInputStream();
os=socket.getOutputStream();
dis=new DataInputStream(is);
ps=new PrintStream(os);
DataInputStream in=new DataInputStream(System.in);
while(true){
s=in.readLine();
//读取当前客户端用户输入的字符串
ps.println(s);
//将输入的字符串传给服务器端
if(s.trim().equals("BYE")){
System.out.println("断开连接");
break;
ss=dis.readLine();
//从服务器获得字符串
System.out.println("server said:"+ss);
//打印字符串
if(ss.trim().equals("BYE")){
System.out.println("断开连接");
break;
dis.close();
ps.close();
os.close();
is.close();
socket.close();
catch(Exception e){
System.out.println("Error:"+e);
}
}
后一篇:关于幸福