socket 服务器浏览器与服务器客户端实例
一、服务器与浏览器
// 取得本机的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 服务器浏览器与服务器客户端实例相关推荐
- java Socket Tcp 浏览器和服务器(一)
自定义服务端, 使用已有的客户端IE,了解一下客户端给服务端发了什么请求? 发送的请求是: GET / HTTP/1.1 请求行 请求方式 /myweb/1.html 请求的资源路径 ht ...
- python 实现TCP socket通信和 HTTP服务器、服务器和客户端通信python实例
python 实现TCP socket通信和 HTTP服务器.服务器和客户端通信实例 socket是什么? 服务器和客户端通信的流程 python 实现TCP socket通信例子 关于Host和PO ...
- java socket 编程 客户机服务器_Java Socket编程服务器响应客户端实例代码
通过输入流来读取客户端信息,相应的时候通过输出流来实现. 服务端类的代码: import java.io.BufferedReader; import java.io.IOException; imp ...
- java服务端代码_Java Socket编程服务器响应客户端实例代码
通过输入流来读取客户端信息,相应的时候通过输出流来实现. 服务端类的代码: import java.io.BufferedReader; import java.io.IOException; imp ...
- php 连接socket服务器_PHP-Socket服务端客户端发送接收通信实例详解
Socket介绍 什么是socket 所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过"套接字"向网络发出请求 ...
- 服务器 主动 推送 客户端浏览器 消息***
前言 通常情况下,无论是web浏览器还是移动app,我们与服务器之间的交互都是主动的,客户端向服务器端发出请求,然后服务器端返回数据给客户端,客户端浏览器再将信息呈现,客户端与服务端对应的模式是: 客 ...
- 服务器关闭重启后客户端socket能自动连接吗_用Python 撸一个 Web 服务器
从一个 Hello World 程序说起 要编写 Web 服务器,需要用到一个 Python 内置库 socket.Socket 是一个比较抽象的概念,中文叫套接字,它代表一个网络连接.两台计算机之间 ...
- socket服务器区分各个客户端信息,socket服务器如何区分哪个客户端
socket服务器如何区分哪个客户端 内容精选 换一换 要访问您的文件系统,如果是Linux云服务器,您需要在Linux云服务器上安装NFS客户端后使用挂载命令挂载文件系统:如果是Windows云服务 ...
- 【Linux】socket网络编程之服务器与客户端的数据交互
[Linux]socket网络编程之服务器与客户端的数据交互 前言参考 argc !=2是什么意思 inet pton函数 对stdin,stdout 和STDOUT_FILENO,STDIN_FIL ...
最新文章
- 苹果所有常用证书,appID,Provisioning Profiles配置说明及制作图文教程(精)
- R语言ggplot2可视化使用ggplot2::ggsave函数和gridextra::marrangegrob函数将多个可视化结果保存在pdf文件中
- 文件同步工具 lsyncd2.1.6 安装使用问题
- vscode css提示_锋利码农武器之vscode
- Jvm原理剖析与调优之内存结构
- 心态决定你的人生高度
- Keepalived+Nginx 实现双机热备
- 20211028 Stabilizability
- 配置MySQL以进行ADF开发
- strchr函数的用法
- c# 多个RadioButton与DataTable的数据绑定
- maven 打包java项目_如何使用maven打包java项目?
- ffmpeg转码器移植VC的工程:ffmpeg for MFC
- Oracle下载及安装超详细教程
- 【深度学习】CRNN 文字识别端对端模型 CTC损失
- 费氏数列 中第n项数值的计算并打印
- 比较程序查询方式、程序中断方式、DMA方式对CPU工作效率的影响
- C++异常处理的问题
- 计算机办公小知识,工作常用电脑知识技巧大全
- SSM源码分析之Spring05-DI实现原理(基于Annotation 注入)
热门文章
- 白话hash和数字签名,保证你看得懂
- 如何充分利用JavaScript(ES6)中的解构功能
- 如何使用Bootstrap4和ES6创建自定义确认框
- 谷歌数字图书馆_如何在没有联系的情况下找到6位数字的工作-提示使我获得了Google和其他技术巨头的工作机会...
- 限制HTTP数据包发送Referer
- linux独立应用程序开发,Linux应用程序开发(一)
- CSP 201909-2	小明种苹果(续)Python实现+详解
- 使用计算机辐射最大,计算机辐射的主要来源及其对人体的危害
- qt5.6.3下使用firebird
- 第三次作业---读《构造之法》1-5章有感