一、服务器与浏览器

// 取得本机的loopback网络地址,即127.0.0.1
            IPAddress address = IPAddress.Loopback;
            IPEndPoint endPoint = new IPEndPoint(address, 49152);
            Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            socket.Bind(endPoint);
            socket.Listen(10);
            Console.WriteLine("开始监听,端口号;{0}.", endPoint.Port);
            while (true)
            {
                Socket client = socket.Accept();
                Console.WriteLine(client.RemoteEndPoint);
                byte[] buffer = new byte[4096];
                int length = client.Receive(buffer, 4096, SocketFlags.None);
                System.Text.Encoding utf8 = System.Text.Encoding.UTF8;
                string requestString = utf8.GetString(buffer, 0, length);
                Console.WriteLine(requestString);
                string statusLine = "HTTP/1.1 200 OK\r\n";
                byte[] statusLineBytes = utf8.GetBytes(statusLine);
                string responseBody = "<html><head><title>From Socket Server</title></head><body><hl>Hello,world.</hl></body></html>";
                byte[] responseBodyBytes = utf8.GetBytes(responseBody);
                // 回应的头部
                string responseHeader = string.Format("Content-Type:text/html;charset=UTF-8\r\nContent-Length:{0}\r\n",
                    responseBody.Length);
                byte[] responseHeaderBytes = utf8.GetBytes(responseHeader);
                // 向客户端发送状态消息
                client.Send(statusLineBytes);
                // 向客户端发送回应头
                client.Send(responseHeaderBytes);
                client.Send(new byte[] { 13, 10 });
                client.Send(responseBodyBytes);
                client.Close();
                if (Console.KeyAvailable)
                {
                    break;
                }
                socket.Close();
            }

最后在浏览器地址栏中输入:http://localhost:49152

二、服务器客户端

服务端:

class Program{private static byte[] result = new byte[1024];private static int myProt = 8885;   //端口static Socket serverSocket;static void Main(string[] args){//服务器IP地址IPAddress ip = IPAddress.Parse("127.0.0.1");serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);serverSocket.Bind(new IPEndPoint(ip, myProt));  //绑定IP地址:端口serverSocket.Listen(10);    //设定最多10个排队连接请求Console.WriteLine("启动监听{0}成功", serverSocket.LocalEndPoint.ToString());//通过Clientsoket发送数据Thread myThread = new Thread(ListenClientConnect);myThread.Start();Console.ReadLine();}/// <summary>/// 监听客户端连接/// </summary>private static void ListenClientConnect(){while (true){Socket clientSocket = serverSocket.Accept();clientSocket.Send(Encoding.ASCII.GetBytes("Server Say Hello"));Thread receiveThread = new Thread(ReceiveMessage);receiveThread.Start(clientSocket);}}/// <summary>/// 接收消息/// </summary>/// <param name="clientSocket"></param>private static void ReceiveMessage(object clientSocket){Socket myClientSocket = (Socket)clientSocket;while (true){try{//通过clientSocket接收数据int receiveNumber = myClientSocket.Receive(result);Console.WriteLine("接收客户端{0}消息{1}", myClientSocket.RemoteEndPoint.ToString(), Encoding.ASCII.GetString(result, 0, receiveNumber));}catch(Exception ex){Console.WriteLine(ex.Message);myClientSocket.Shutdown(SocketShutdown.Both);myClientSocket.Close();break;}}}}

客户端:

class Program{private static byte[] result = new byte[1024];static void Main(string[] args){//设定服务器IP地址IPAddress ip = IPAddress.Parse("127.0.0.1");Socket clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);try{clientSocket.Connect(new IPEndPoint(ip, 8885)); //配置服务器IP与端口Console.WriteLine("连接服务器成功");}catch{Console.WriteLine("连接服务器失败,请按回车键退出!");return;}//通过clientSocket接收数据int receiveLength = clientSocket.Receive(result);Console.WriteLine("接收服务器消息:{0}",Encoding.ASCII.GetString(result,0,receiveLength));//通过 clientSocket 发送数据for (int i = 0; i < 10; i++){try{Thread.Sleep(1000);    //等待1秒钟string sendMessage = "client send Message Hellp" + DateTime.Now;clientSocket.Send(Encoding.ASCII.GetBytes(sendMessage));Console.WriteLine("向服务器发送消息:{0}" + sendMessage);}catch{clientSocket.Shutdown(SocketShutdown.Both);clientSocket.Close();break;}}Console.WriteLine("发送完毕,按回车键退出");Console.ReadLine();}}

转载于:https://www.cnblogs.com/honghong75042/archive/2013/05/11/3072377.html

socket 服务器浏览器与服务器客户端实例相关推荐

  1. java Socket Tcp 浏览器和服务器(一)

    自定义服务端, 使用已有的客户端IE,了解一下客户端给服务端发了什么请求? 发送的请求是: GET / HTTP/1.1  请求行  请求方式  /myweb/1.html  请求的资源路径   ht ...

  2. python 实现TCP socket通信和 HTTP服务器、服务器和客户端通信python实例

    python 实现TCP socket通信和 HTTP服务器.服务器和客户端通信实例 socket是什么? 服务器和客户端通信的流程 python 实现TCP socket通信例子 关于Host和PO ...

  3. java socket 编程 客户机服务器_Java Socket编程服务器响应客户端实例代码

    通过输入流来读取客户端信息,相应的时候通过输出流来实现. 服务端类的代码: import java.io.BufferedReader; import java.io.IOException; imp ...

  4. java服务端代码_Java Socket编程服务器响应客户端实例代码

    通过输入流来读取客户端信息,相应的时候通过输出流来实现. 服务端类的代码: import java.io.BufferedReader; import java.io.IOException; imp ...

  5. php 连接socket服务器_PHP-Socket服务端客户端发送接收通信实例详解

    Socket介绍 什么是socket 所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过"套接字"向网络发出请求 ...

  6. 服务器 主动 推送 客户端浏览器 消息***

    前言 通常情况下,无论是web浏览器还是移动app,我们与服务器之间的交互都是主动的,客户端向服务器端发出请求,然后服务器端返回数据给客户端,客户端浏览器再将信息呈现,客户端与服务端对应的模式是: 客 ...

  7. 服务器关闭重启后客户端socket能自动连接吗_用Python 撸一个 Web 服务器

    从一个 Hello World 程序说起 要编写 Web 服务器,需要用到一个 Python 内置库 socket.Socket 是一个比较抽象的概念,中文叫套接字,它代表一个网络连接.两台计算机之间 ...

  8. socket服务器区分各个客户端信息,socket服务器如何区分哪个客户端

    socket服务器如何区分哪个客户端 内容精选 换一换 要访问您的文件系统,如果是Linux云服务器,您需要在Linux云服务器上安装NFS客户端后使用挂载命令挂载文件系统:如果是Windows云服务 ...

  9. 【Linux】socket网络编程之服务器与客户端的数据交互

    [Linux]socket网络编程之服务器与客户端的数据交互 前言参考 argc !=2是什么意思 inet pton函数 对stdin,stdout 和STDOUT_FILENO,STDIN_FIL ...

最新文章

  1. 苹果所有常用证书,appID,Provisioning Profiles配置说明及制作图文教程(精)
  2. R语言ggplot2可视化使用ggplot2::ggsave函数和gridextra::marrangegrob函数将多个可视化结果保存在pdf文件中
  3. 文件同步工具 lsyncd2.1.6 安装使用问题
  4. vscode css提示_锋利码农武器之vscode
  5. Jvm原理剖析与调优之内存结构
  6. 心态决定你的人生高度
  7. Keepalived+Nginx 实现双机热备
  8. 20211028 Stabilizability
  9. 配置MySQL以进行ADF开发
  10. strchr函数的用法
  11. c# 多个RadioButton与DataTable的数据绑定
  12. maven 打包java项目_如何使用maven打包java项目?
  13. ffmpeg转码器移植VC的工程:ffmpeg for MFC
  14. Oracle下载及安装超详细教程
  15. 【深度学习】CRNN 文字识别端对端模型 CTC损失
  16. 费氏数列 中第n项数值的计算并打印
  17. 比较程序查询方式、程序中断方式、DMA方式对CPU工作效率的影响
  18. C++异常处理的问题
  19. 计算机办公小知识,工作常用电脑知识技巧大全
  20. SSM源码分析之Spring05-DI实现原理(基于Annotation 注入)

热门文章

  1. 白话hash和数字签名,保证你看得懂
  2. 如何充分利用JavaScript(ES6)中的解构功能
  3. 如何使用Bootstrap4和ES6创建自定义确认框
  4. 谷歌数字图书馆_如何在没有联系的情况下找到6位数字的工作-提示使我获得了Google和其他技术巨头的工作机会...
  5. 限制HTTP数据包发送Referer
  6. linux独立应用程序开发,Linux应用程序开发(一)
  7. CSP 201909-2 小明种苹果(续)Python实现+详解
  8. 使用计算机辐射最大,计算机辐射的主要来源及其对人体的危害
  9. qt5.6.3下使用firebird
  10. 第三次作业---读《构造之法》1-5章有感