java学习总结——第十八天

原创 2014年05月13日 17:33:36

网络编程 Socket

Socket可以看成是两个程序进行通讯连接中的一个端口

主要还是代练习

客户机与服务机直接的通讯(Tcp)

服务机


/**
 * 服务器端程序
 * @author Administrator
 *
 */
public class Server {

//1、定义资源
ServerSocket serverSocket; //服务器端ServerSocket
private int port=8989;

//2、初始化,启动服务器
public Server(){
try {
serverSocket=new ServerSocket(port); //实例化ServerSocket

System.out.println("服务器启动成功!");
} catch (IOException e) {
e.printStackTrace();
System.out.println("服务器启动失败!");
}
}
//3、处理业务
public void service(){
while(true){
Socket socket=null;
try {
socket=serverSocket.accept();//接收客户的链接请求,返回Socket对象,阻塞

//分配给工作线程
new HandlerThread(socket).start();



//接收器(输入流)
// BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));

// //1、字节流
// InputStream is=socket.getInputStream();
//
// //2、字节流——>字符流
// InputStreamReader isr=new InputStreamReader(is);
//
// //3、字符流——>缓冲流
// BufferedReader br=new BufferedReader(isr);


//发送器(输出流)
// PrintWriter pw=new PrintWriter(new OutputStreamWriter(socket.getOutputStream()),true);


// //1、字节流
// OutputStream os=socket.getOutputStream();
//
// //2、字节流——>字符流
// OutputStreamWriter osw=new OutputStreamWriter(os);
//
// //3、字符流——>PrintWriter
// PrintWriter pw=new PrintWriter(osw,true);




// String msg=null;
//读取客户的发生的信息
// while((msg=br.readLine())!=null){
// if(msg.equals("quit")||msg.equals("MagicExit")){
// break;
// }
// System.out.println(clientAdd+":"+clientPort+"> "+msg);

//写出发送信息
//回声
// pw.println("you said: "+msg);  //返回输出给客户端

//聊天发送信息
// Scanner in=new Scanner(System.in);
// msg=in.nextLine();
// pw.println(msg);  //返回输出给客户端
//
// }


// if(msg.equals("MagicExit")){
// break;
// }

} catch (IOException e) {
e.printStackTrace();
}
}

}

public static void main(String[] args) {
new Server().service();
}
}

客户机

public class Client {

//1、资源
Socket socket;
String host="127.0.0.1"; //127.0.0.1 localhost
int port=8889;

//2、连接到服务器
public Client() {
try {
socket=new Socket(host,port);

System.out.println("连接服务器成功!");
} catch (UnknownHostException e) {
e.printStackTrace();
System.out.println("主机无法找到!");
} catch (IOException e) {
e.printStackTrace();
System.out.println("连接服务器错误!");
}
}

//3、处理业务
public void send(){

try {

//发送器
PrintWriter pw=new PrintWriter(new OutputStreamWriter(socket.getOutputStream()),true);
//接收器
BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));


while(true){
Scanner in=new Scanner(System.in);
String msg=in.nextLine();

pw.println(msg);  //发送信息

if(msg.equals("quit")||msg.equals("MagicExit")){
break;
}

msg=br.readLine(); //接收服务器端返回的信息
System.out.println(msg);
}

} catch (IOException e) {
e.printStackTrace();
}finally{
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}


}



public static void main(String[] args) {
new Client().send();
}


}

多线程处理 可以实现多个客户机连接一个服务机

public class HandlerThread extends Thread {

Socket socket;
BufferedReader br;
PrintWriter pw;

public HandlerThread(Socket socket) {
this.socket=socket;
}
/**
* 初始化
* @throws IOException
*/
public void init() throws IOException{
//接收器(输入流)
br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//发送器(输出流)
pw=new PrintWriter(new OutputStreamWriter(socket.getOutputStream()),true);

}


@Override
public void run() {


try {
init();

//获得客户端连接信息(地址,端口)
String clientAdd=socket.getInetAddress().getHostAddress();
int clientPort=socket.getPort();
System.out.println("来自"+clientAdd+":"+clientPort+"的连接请求。");

String msg=null;
//读取客户的发生的信息
while((msg=br.readLine())!=null){
if(msg.equals("quit")||msg.equals("MagicExit")){
break;
}
System.out.println(clientAdd+":"+clientPort+"> "+msg);

//写出发送信息
//回声
pw.println("you said: "+msg);  //返回输出给客户端

//聊天发送信息
// Scanner in=new Scanner(System.in);
// msg=in.nextLine();
// pw.println(msg);  //返回输出给客户端
//
}

} catch (IOException e) {
e.printStackTrace();
}finally{
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}



}

}

JAVA 学习 自我总结

学习总结: 孔子曰学而时习之 不亦悦乎 。学习了新的东西,一定要及时练习和总结,并多次回想记忆,这样才能将知识记忆的牢固; 之前我学习东西只知道贪多,想一口吃一个胖子;但是每次都是事倍功半,这样又...
  • u010582345
  • u010582345
  • 2016年04月08日 23:58
  • 425

Java学习总结

转载自:http://www.dayol.cn/html/world/allcol/2007/0619/6011.html同时感谢该博客众多源代码为我带来的帮助。 ...
  • superdont
  • superdont
  • 2007年07月09日 11:27
  • 2974

阶段学习总结

阶段学习总结 从开始学习java到现在已经过了40多天过去了,同时也学习了java中非常重要的一部分就是面向对象的相关知识,面向对象也是java中较难的一部分,因为它是一种抽象的思想,在这一个阶段的...
  • LS1910831673
  • LS1910831673
  • 2016年12月05日 18:59
  • 468

个人学习总结一Java的概述

一、了解Java         Java是完全面向对象的、安全可靠、与平台无关的编程语言。         Java的三种技术构架:JAVAEE企业版、JAVASE标准版、JAVAME小...
  • bj_lzx
  • bj_lzx
  • 2014年10月20日 17:43
  • 445

java基础学习总结——面向对象

目录 一、面向过程的思想和面向对象的思想 二、简单理解面向对象 三、面向对象的设计思想 四、对象和类的概念 五、如何抽象出一个类? 六、类(对象)之间的关系 七、Java与面向对象 八、为什么使用面向...
  • hello_zhou
  • hello_zhou
  • 2016年05月19日 21:22
  • 1935

java IO流学习总结

Java中的流,可以从不同的角度进行分类。     按流的方向分:输入流和输出流。     按处理数据单位分:字节流和字符流。     按实现功能分:节点流和处理流。       输出流:     ...
  • du_minchao
  • du_minchao
  • 2015年10月11日 12:35
  • 16151

学习java的感悟和总结

学习java也有两年的时间了,刚接触java,首先学习java的基本语法、常见API、java IO和多线程,后来在实际写项目的时候发现java本是很简单的一门语言,但是还要熟悉其他的知识。接着在盲目...
  • Bamboo_Dong
  • Bamboo_Dong
  • 2015年07月26日 11:40
  • 2602

java IO体系的学习总结

java IO体系的整理笔记1.Java Io流的概念,分类,类图。1.1 Java Io流的概念    java的io是实现输入和输出的基础,可以方便的实现数据的输入和输出操作。在java中把不同...
  • nightcurtis
  • nightcurtis
  • 2016年05月05日 16:31
  • 3704

java框架学习总结

近两个月一直在学习java各种框架技术,收获还是蛮大的。不同的框架都有她突出的亮点,在这个阶段,主要还是看了他们设计的理念、涉及的概念,所以主要是看,代码敲的不多。 主要看的框架:struts、web...
  • thinkpadleo
  • thinkpadleo
  • 2006年05月04日 09:49
  • 2806

java学习总结及心得体会

java语言学习总结
  • u010331406
  • u010331406
  • 2015年08月02日 16:41
  • 5011
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java学习总结——第十八天
举报原因:
原因补充:

(最多只允许输入30个字)