黑马程序员技术交流社区
标题:
网络连接 Socket
[打印本页]
作者:
陈少文
时间:
2012-6-20 13:39
标题:
网络连接 Socket
本帖最后由 陈少文 于 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();
}
作者:
唐辉辉
时间:
2012-6-20 13:42
本帖最后由 唐辉辉 于 2012-6-20 13:46 编辑
Socket socket = server.accept();
基本数据类型就那么几种。其它都是引用数据类型。
所以这里肯定就一个引用数据类型了.server.accept()这个方法返回一个Socket类型,你去查一下API .java.net.Socket
作者:
耿鑫
时间:
2012-6-20 13:52
本帖最后由 耿鑫 于 2012-6-20 13:54 编辑
Socket是个类,就和 ArrayList, HashMap,String 或者是自定义的Student,User类一样 ,你用String的时候不也是这么写吗? String str = new String("abc"), str就是String类型的,这里只不过Socket是表示套接字的类,什么是套接字,你可以这么理解,socket就是插口,就想电源插口一样,只有接通了才能工作,你光有一个插口不行,例外一边不提供电源你也不能工作,就想你上网必须插上网线一样,光有电脑提供了网口是不能上网的,只有两端建立了连接才能工作,就是这个道理
作者:
邱国
时间:
2012-6-20 14:02
本帖最后由 邱国 于 2012-6-20 14:04 编辑
看jdk的文档,查找ServerSocket类的accept方法,注意看这个方法的返回数据类型
accept返回的是一个Scoket类,
Socket socket = server.accept(); 所以这代码的意思其实就是对类进行“赋值”而已(可以通俗地了解),例如如 有一student类,通常我们都会: student s1 = new student();右边是new出一个对象,而上面的代码是返回一个对象(已经有对象了,不用new了),
从网络编程角度,其实就是服务端读取客户端的流对象,从而对scoket流进行读写操作
作者:
孙安庆
时间:
2012-6-20 14:50
楼上说的很清楚了,我再补充一点个人理解,不是很恰当,有错的地方还望大家指出
可以把serversocket当做一个港口,socket是码头,网络封包是船,数据是货物
港口收到船(网络封包)的请求的时候,会分配一个码头(socket)给他;码头工人再卸货,就是拆包的过程,最终得到数据,就可以进行处理了
又来一艘船(又一个客户端请求连接),就再分一个新码头给他。。。
回到你的程序,现在港口只有一个码头(单线程),所以来的所有船(客户端连接)只能排队等着卸货,要想建造国际化的深水港还得实现一下多线程
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2