A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈少文 中级黑马   /  2012-6-20 13:39  /  2421 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈少文 于 2012-6-20 14:04 编辑

//网络连接

import java.net.*;
import java.io.*;
public class NetConnectServer
{
public static void main(String[] args) throws IOException
{
  
  
  ServerSocket server = new  ServerSocket(8600);
  //等待客户请求      请问一下,Socket 是什么意思,是不是变量类型   还是指调用了java.net.Socket 方法
Socket socket = server.accept();
  
  //输入流
  BufferedReader in
     = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  
  //输出流
  PrintWriter out = new PrintWriter(socket.getOutputStream());
  
  server.close();
  socket.close();
  
}

4 个回复

倒序浏览
本帖最后由 唐辉辉 于 2012-6-20 13:46 编辑

Socket socket = server.accept();
基本数据类型就那么几种。其它都是引用数据类型。
所以这里肯定就一个引用数据类型了.server.accept()这个方法返回一个Socket类型,你去查一下API .java.net.Socket
回复 使用道具 举报
本帖最后由 耿鑫 于 2012-6-20 13:54 编辑

Socket是个类,就和 ArrayList, HashMap,String 或者是自定义的Student,User类一样 ,你用String的时候不也是这么写吗? String str = new String("abc"), str就是String类型的,这里只不过Socket是表示套接字的类,什么是套接字,你可以这么理解,socket就是插口,就想电源插口一样,只有接通了才能工作,你光有一个插口不行,例外一边不提供电源你也不能工作,就想你上网必须插上网线一样,光有电脑提供了网口是不能上网的,只有两端建立了连接才能工作,就是这个道理

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 邱国 于 2012-6-20 14:04 编辑

看jdk的文档,查找ServerSocket类的accept方法,注意看这个方法的返回数据类型

accept返回的是一个Scoket类,

Socket socket = server.accept();   所以这代码的意思其实就是对类进行“赋值”而已(可以通俗地了解),例如如  有一student类,通常我们都会:  student  s1 = new student();右边是new出一个对象,而上面的代码是返回一个对象(已经有对象了,不用new了),

从网络编程角度,其实就是服务端读取客户端的流对象,从而对scoket流进行读写操作




评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
楼上说的很清楚了,我再补充一点个人理解,不是很恰当,有错的地方还望大家指出
可以把serversocket当做一个港口,socket是码头,网络封包是船,数据是货物
港口收到船(网络封包)的请求的时候,会分配一个码头(socket)给他;码头工人再卸货,就是拆包的过程,最终得到数据,就可以进行处理了
又来一艘船(又一个客户端请求连接),就再分一个新码头给他。。。

回到你的程序,现在港口只有一个码头(单线程),所以来的所有船(客户端连接)只能排队等着卸货,要想建造国际化的深水港还得实现一下多线程

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马