---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! -----------------------

一.Socket一般应用模式(服务器和客户端)
(1)、服务器welcoming socket 开始监听端口(负责监听客户端连接信息)
(2)、客户端client socket连接服务端指定端口(负责接收和发送服务端信息)
(3)、服务端welcoming socket监听到客户端连接,创建connection socket(负责和客户端通信)

二.服务器端的Socket(至少需要两个),一个负责接收客户端连接(但不负责与客户端通信), 
1.每成功接收到一个客户端的连接便在服务端产生一个对应的Socket
2.在接收到客户端连接时创建
3.为每个连接成功的客户端都创建一个对应的Socket

三.客户端的Socket 
1.必须指定要连接的服务端地址和端口
2.通过创建一个Socket对象来初始化一个到服务器端的TCP连接

四.Socket的通讯过程

(1)服务器端:
申请一个socket 
绑定到一个IP地址和一个端口上 
开启侦听,等待接受连接

(2)客户端:
申请一个socket 
连接服务器(指明IP地址和端口号)

(3)服务器端接到连接请求后,产生一个新的socket(端口大于1024)与客户端建立连接并进行通讯,原监听socket继续监听.

五.Socket的构造函数
连接通过构造函数完成
用法:  
public Socket(AddressFamily addressFamily,SocketType socketType,ProtocolType protocolType)
 AddressFamily成员指定Socket用来解析地址的寻址方案.例如:InterNetwork指示当Socket使用一个IP版本4地址连接. 
 SocketType定义要打开的Socket的类型 
 Socket类使用ProtocolType枚举向Windows Sockets API 通知所请求的协议 
例如:  
mySocket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

注意:
至少要定义一个要连接的远程主机IP和端口号. 
端口号必须在1和65535之间,最好在1024以后. 
要连接的远程主机必须正在监听指定端口,也就是说你无法随意连接远程主机.

例如:
IPAddress addr=IPAddress.Parse("127.0.0.1");
IPEndPoint endp=new IPEndPoint(addr,10001);
服务端先绑定:serverWelcomeSocket.Bind(endp)
客户端再连接:clientSocket.Connect(endp)

六.Socket方法
(1)、首先引入命名空间:using System.Net;里面包含:IPAddress,IPEndPoint(ip和port)类
(2)、相关类:
IpAddress类:包含了一个IP地址 
IPEndPoint类:包含了一对IP地址和端口号 
(3)、相关方法:
Socket():创建一个Socket 
Bind():绑定一个本地的IP和端口号(IPEndPoint) 
Listen():让Socket监听传入的连接尝试,并指定监听队列容量 
Connect():初始化与另一个Socket的连接 
Accept():接收连接并返回一个新的socket 
Send():输出数据到Socket 
Receive():从Socket中读取数据 
Close():关闭Socket(销毁连接) 
5、Dictionary 泛型字典集合 
 
泛型最常见的用途是泛型集合,命名空间System.Collections.Generic 中包含了一些基于泛型的集合类,
使用泛型集合类可以提供更高的类型安全性,还有更高的性能,避免了非泛型集合的重复的装箱和拆箱。 
很多非泛型集合类都有对应的泛型集合类,下面是常用的非泛型集合类以及对应的泛型集合类:
非泛型集合类 泛型集合类
ArrayList List
HashTable DIctionary
Queue         Queue
Stack         Stack
SortedList SortedList

我们用的比较多的非泛型集合类主要有 ArrayList类 和 HashTable类。我们经常用HashTable 来存储将要写入到数据库或者返回的信息,
在这之间要不断的进行类型的转化,增加了系统装箱和拆箱的负担,如果我们操纵的数据类型相对确定的话用 Dictionary 集合类
来存储数据就方便多了.
例如:
我们需要在电子商务网站中存储用户的购物车信息( 商品名,对应的商品个数)时,完全可以用 Dictionary 来存储购物车信息,而不需要任何的类型转化。

--------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.nSet

黑马程序员:多线程Socket的更多相关文章

  1. 黑马程序员:Java基础总结----网络编程

    黑马程序员:Java基础总结 网络编程   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 网络编程 网络通讯要素 . IP地址 . 网络中设备的标识 . 不易记忆,可用 ...

  2. 黑马程序员:轻松精通Java学习路线连载1-基础篇!

    编程语言Java,已经21岁了.从1995年诞生以来,就一直活跃于企业中,名企应用天猫,百度,知乎......都是Java语言编写,就连现在使用广泛的XMind也是Java编写的.Java应用的广泛已 ...

  3. 【黑马18期Java毕业生】黑马程序员Java全套资料+视频+工具

        Java学习路线图引言:        黑马程序员:深知广大爱好Java的人学习是多么困难,没视频没资源,上网花钱还老被骗. 为此我们历时一个月整理这套Java学习路线图,不管你是不懂电脑的小 ...

  4. 黑马程序员面试宝典(Java)Beta6.0免费下载

    场景 JavaSE基础 面向对象特征以及理解 访问权限修饰符区别 理解clone对象 JavaSE语法 java有没有goto语句 &和&&的区别 如何跳出当前的多重嵌套循环? ...

  5. 黑马程序员——【Java高新技术】——代理

    ---------- android培训.java培训.期待与您交流! ---------- 一.“代理概述”及“AOP概念” (一)代理概述 1.问题:要为已存在的多个具有相同接口的目标类的各个方法 ...

  6. 黑马程序员+SQL基础(上)

    黑马程序员+SQL基础 ---------------<a href="http://edu.csdn.net"target="blank">ASP ...

  7. 黑马程序员+Winform基础(上)

    黑马程序员+Winform基础 ---------------<a href="http://edu.csdn.net"target="blank"> ...

  8. 黑马程序员—C语言的函数、数组、字符串

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.函数 定义:函数是代码复用的一种机制. 函数的基本语法: 返回类型 函数名 ( 参数类型 参 ...

  9. 黑马程序员:Java基础总结----泛型(高级)

    黑马程序员:Java基础总结 泛型(高级)   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 泛型(高级) 泛型是提供给javac编译器使用的,可以限定集合中的输入类型 ...

  10. 黑马程序员:Java基础总结----类加载器

    黑马程序员:Java基础总结 类加载器   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 类加载器 Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个 ...

随机推荐

  1. Scrapy实战篇(五)爬取京东商城文胸信息

    创建scrapy项目 scrapy startproject jingdong 填充 item.py文件 在这里定义想要存储的字段信息 import scrapy class JingdongItem ...

  2. 使用matplotlib绘图(四)之散点图

    # 使用matplotlib绘制散点图 import numpy as np import matplotlib.pyplot as plt # 设置全局刻度标签大小 plt.rcParams['xt ...

  3. HDU5904 LCIS 水题

    http://acm.hdu.edu.cn/showproblem.php?pid=5904:// 说是LCIS其实和LCIS没有一点儿关系的水题. 代码 #include<cstdio> ...

  4. [转]php-fpm - 启动参数及重要配置详解

    约定几个目录/usr/local/php/sbin/php-fpm/usr/local/php/etc/php-fpm.conf/usr/local/php/etc/php.ini 一,php-fpm ...

  5. YanghuiTriangle

    Demand 1 用实现循环队列 2 参考PPT用循环队列打印杨辉三角 3 用JDB或IDEA单步跟踪排队情况,画出队列变化图,包含自己的学号信息 4 把代码推送到代码托管平台 5 把完成过程写一篇博 ...

  6. arraylist-lambada-性能测试

    package cn.com.one;import java.util.ArrayList;public class ttt { public static void main(String [] a ...

  7. Java Web UI框架

    1.Aliceui Aliceui是支付宝的样式解决方案,是一套精选的基于 spm 生态圈的样式模块集合,是 Arale 的子集,也是一套模块化的样式命名和组织规范,是写 CSS 的更好方式. git ...

  8. [转]MinGW编译wxWidgets问题

    其实利用MinGW编译wxWidgets是一件挺简单的事情,但是最近在编译的时候遇到一些问题,并找到解决方案,因此在此分享一下个人经验.编译出错的原因是由于安装了MSYS的缘故.   错误信息类似于如 ...

  9. The Struts dispatcher cannot be found. This is usually caused by using Struts ta

    HTTP Status 500 - type Exception report message description The server encountered an internal error ...

  10. 【QQ输入法】QQ输入法输入的英文字母顺便空格很大

    正常的输入出来是这个样子的: 现在变成了这个样子: 怎么解决这个问题呢: 快捷键 shift+空格   即可解决