socket编程 tcp/ip
来源:互联网 发布:javascript格式化时间 编辑:程序博客网 时间:2024/04/25 02:17
客户端代码 using System; using System.Collections.Generic; using System.Text; using System.Net; using System.IO; using System.Net.Sockets; namespace client { class Program { static void Main(string[] args) { try { //创建客户端socket,使用tcp通信协议 TcpClient TcpClient = new TcpClient(); TcpClient.Connect("127.0.0.1", 8888); //指定地址与端口号 Console.WriteLine("Connect Complete"); Console.WriteLine("Input string:"); //Connect方法使用指定的IP地址和端口号将客户端连接到远程TCP主机 //读入控制台输入的文字 String str = Console.ReadLine(); Stream stm = TcpClient.GetStream(); //Unity3D教程手册:www.unitymanual.com //定义数据流,用于发送和接收数据 ASCIIEncoding AS = new ASCIIEncoding(); //将字符串转换为byte类型 byte[] b = AS.GetBytes(str); //Write(参数1,参数2,参数3)表示向服务端发送字符串 //参数1指将此数组复制到当前流,参数2指从零开始的字节偏移量,参数3指要写入当前流的字节数(即字符串长度) stm.Write(b, 0, b.Length); Console.WriteLine("Send Complete"); //Unity3D教程手册:www.unitymanual.com //stm.Read在当前流中读入服务端发来的响应信息,其参数与Write方法参数一致,k值为读入字符串的长度 byte[] bb = new byte[100]; int k = stm.Read(bb, 0, 100); for (int i = 0; i < k; i++) Console.Write(Convert.ToChar(bb[i])); TcpClient.Close(); //释放TcpClient实例,并不关闭基础连接 Console.ReadLine(); } catch (Exception e) { Console.WriteLine("Error!" + e.StackTrace); } } } } 服务端代码 using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; namespace server { class Program { static void Main(string[] args) { try { //创建listener,ip-地址,port-端口 IPAddress Ip = IPAddress.Parse("127.0.0.1"); TcpListener TcpList = new TcpListener(Ip, 8888); TcpList.Start(); Console.WriteLine("Server start!"); Console.WriteLine("Ip address:" + TcpList.LocalEndpoint); //LocalEndpoint获取服务端(即本地)地址与端口等信息 Console.WriteLine("Wait"); //获取监听到的socket Socket Soc = TcpList.AcceptSocket(); Console.WriteLine("Received Connection:" + Soc.RemoteEndPoint); //接收到的信息 //Unity3D教程手册:www.unitymanual.com byte[] b = new byte[100]; //Soc.Receive(b)从socket接收数据,将数据存入接收缓冲区列表中,k的值为该数据的长度 int k = Soc.Receive(b); Console.WriteLine("Received data from client:"); for (int i = 0; i < k; i++) //Convert.ToChar(b)将数组b转换基本数据类型为char的类型并输出 Console.Write(Convert.ToChar(b[i])); //发送信息 //ASCIIEncoding表示Unicode字符的ASCII字符编码类 ASCIIEncoding AS = new ASCIIEncoding(); //Unity3D教程手册:www.unitymanual.com //Soc.Send向客户端发送数据,AS.GetBytes()获得括号中字符串的bytes值 Soc.Send(AS.GetBytes("Received data!")); //关闭连接并释放所有关联的资源 Soc.Close(); //关闭侦听 TcpList.Stop(); //等待输入,起到暂停的作用 Console.ReadLine(); } catch(Exception e) { Console.WriteLine("Error!" + e.StackTrace); //获取当前异常发生时调用堆栈上的帧的字符串 } } } }
0 0
- TCP/IP socket编程
- socket编程 tcp/ip
- TCP/IP socket编程
- java tcp/ip socket编程
- Java TCP/IP Socket编程
- c++ socket 编程TCP/IP
- SOCKET的TCP/IP编程
- TCP/IP的Socket编程
- socket编程—TCP/IP
- TCP/IP、UDP、Socket编程
- TCP/IP Socket 编程读书笔记
- SOCKET 编程TCP/IP、UDP
- Linux TCP/IP Socket编程
- Java TCP/IP Socket编程
- TCP/IP的Socket编程
- socket与tcp/ip编程
- tcp/ip 网络编程 socket
- TCP/IP的Socket编程
- Linux下tomcat-7.0.11中tomcat-users.xml配置
- 安卓2.2以上可以用手机做计算机无线网卡的(用USB比便携式热点要快)
- cocos2d-x在eclipse上搭建开发环境(全网最标准方法,不要cywin)
- 0219总结
- Android RIL源码梳理(1) ——rild启动流程
- socket编程 tcp/ip
- 为什么数组可以不加“&”取它的地址,而普通变量必须要加“& ”才可以呢?
- 黑马程序员_函数
- 重装系统
- Codeforces 393A Nineteen(水题)
- java企业开发四:ssh+JPA(hibernate实现)
- 嵌入式 经典嵌入式笔试题集合
- FtpURLConnecton 可以下载ftp地址格式的图片
- 图结构练习——BFSDFS——判断可达性