加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Java Socket示例   双向通信(本机和内网测试通过)

(2012-07-07 19:44:20)
标签:

java

socket

源代码

杂谈

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);
                  }
}
}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有