您的位置:首页 > 理论基础 > 计算机网络

基于Socket的java网络编程

2013-08-02 20:53 661 查看
今天主要学习一点基于socket通信的java网络编程的基本原理和例子:

要想实现网络中的通信我们需要借助socket,即我们需要知道IP地址和应用进程的端口号,再利用相关的协议、借助物理介质的传送,这就是实现网络传输的基本。
所以,对于网络编程而言,socket起着关键作用,我们直接看下面的代码,分别是服务器端和客户端的程序,这是最简单、单线程的通讯的网络编程的例子,但是它却体现了基本的原理。
package SocketTest;
/*
* 服务器端程序
*/
import java.net.*;
import java.io.*;
import java.util.Scanner;
public class MyServer{
public static void main(String[] args) throws Exception{
// 启动一个服务端 端口号:0-65535 1024以下不建议使用。
System.out.println("*********服务器***********");
ServerSocket ss = new ServerSocket(8899);
// 这是一个阻塞的操作,等待客户端连接
Socket s = ss.accept();
System.out.println("一个客户端连接上来了");
//利用包装流实现听筒
InputStream is = s.getInputStream();
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
//利用包装流实现话筒
OutputStream os = s.getOutputStream();
PrintStream ps = new PrintStream(os);

//定义一个Boolean型的标志位,可以使while(true)循环骗过编译器
boolean flag = true;
Scanner scan = new Scanner(System.in);
while(flag){
String str = br.readLine();//听话
System.out.println("客户端说:"+str);
ps.println(scan.next());// 说话

}
//记得关闭包装流和socket
s.close();
br.close();
ps.close();
ss.close();
}
}
package SocketTest;
/*
* 客户端
*/
import java.net.*;
import java.io.*;
import java.util.Scanner;
public class MyClient {
public static void main(String[] args) throws Exception{
//  启动一个客户端。
System.out.println("*********客户端***********");
Socket s = new Socket("127.0.0.1",8899);
//包装流:话筒
OutputStream os = s.getOutputStream();
PrintStream ps = new PrintStream(os);
// 输入流:听筒
InputStream is = s.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));

boolean flag = true;
Scanner scan = new Scanner(System.in);
while(flag){
ps.println(scan.next());
System.out.println("服务器说:"+br.readLine());
}
ps.close();
br.close();
os.close();
s.close();
}
}
接下来我们运行这两个程序,注意:一定要先运行服务器端来监听等待客户端的连接,再运行客户端。
运行结果:

服务器



客户端:




以上就是今天要写的一点内容,你学会了吗?努力学习哦!


本文出自 “MySpace” 博客,请务必保留此出处http://wangzhaoli.blog.51cto.com/7607113/1263169
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: