简易C# socket
服务器
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading; namespace MyServer
{
class Socket_Server
{
public int port;
public IPAddress ip; private static Socket s_socket;
private static byte[] result = new byte[]; public void Init(string address, int port)
{
this.port = port;
ip = IPAddress.Parse(address);
} public void Connection()
{
s_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
s_socket.Bind(new IPEndPoint(ip, port));
s_socket.Listen(); Thread st = new Thread(Listener);
st.Start();
} private void Listener()
{
while (true)
{
Socket c_socket = s_socket.Accept();
c_socket.Send(Encoding.UTF32.GetBytes("连接服务器成功!"));
Thread ct = new Thread(Receive);
ct.Start(c_socket);
}
} private void Receive(object socket)
{
Socket c_socket = (Socket)socket;
while (true)
{
try
{
int num = c_socket.Receive(result);
string info = Encoding.UTF32.GetString(result,, num);
Console.WriteLine(info);
c_socket.Send(Encoding.UTF32.GetBytes("消息回执"));
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Close();
break;
}
}
} public void Close()
{
s_socket.Shutdown(SocketShutdown.Both);
s_socket.Close();
}
}
}
服务器-控制台
using System; namespace MyServer
{
class Program
{
public static string inputValue; static void Main(string[] args)
{
Socket_Server server = new Socket_Server();
server.Init("127.0.0.1", );
server.Connection(); while (inputValue != "Exit")
{
inputValue = Console.ReadLine();
if (inputValue == "Close")
{
server.Close();
}
}
}
}
}
客户端
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks; namespace Client
{
class Socket_Client
{
public int port;
public IPAddress ip; private static Socket c_socket;
private static byte[] result = new byte[]; public void Init(string address, int port)
{
this.port = port;
ip = IPAddress.Parse(address);
} public void Connection()
{
c_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
try
{
c_socket.Connect(new IPEndPoint(ip, port));
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
ReceiveMessage();
} public void ReceiveMessage()
{
int len = c_socket.Receive(result, , , SocketFlags.None);
string message = Encoding.UTF32.GetString(result, , len);
Console.WriteLine(message);
} public void SendMessage(string message)
{
byte[] buff = Encoding.UTF32.GetBytes(message);
c_socket.Send(buff);
ReceiveMessage();
} public void Close()
{
c_socket.Close();
}
}
}
客户端-控制台
using System; namespace Client
{
class Program
{
public static string inputValue; static void Main(string[] args)
{
Socket_Client client = new Socket_Client();
client.Init("127.0.0.1", );
client.Connection(); while (inputValue != "Exit")
{
inputValue = Console.ReadLine();
client.SendMessage(inputValue);
if (inputValue == "Close")
{
client.Close();
}
}
}
}
}
简易C# socket的更多相关文章
- 从零开始学android -- 简易的socket通信
先来介绍下socket,网上摘抄点资料,免得自己打字了 网络中进程之间如何通信? 本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 1.消息传递(管道.FIFO.消息队列) 2.同步(互 ...
- java版简易socket客户端
android项目需要使用到心跳, 于是编写了一个简易的socket客户端程序 主要功能是给服务端发送心跳包,保持在线状态 没有使用框架,这样避免了需要引入包,直接使用的阻塞Socket通信. 主要逻 ...
- C# Socket 简易的图片传输
关于网络的数据传输我就是个小白,所以今天学习一下简易的Socket图片传输. 客户端和服务器的连接咱们上次已经学过了,咱们先从简易的文件传输入手.下面开始代码分析了. Server.cs using ...
- 关于socket tcp 断线重连
这个问题困扰过我几次,都没有来得及研究,今天研究一下. 首先写一个最简易的socket tcp程序,连接成功后再关闭服务器然后再用客户端各种操作看是什么情况 测试表明 (1)客户端已经连接,当服务端关 ...
- (六十四)iOS的socket实现(C+OC混合实现)
对于微博.微信朋友圈之类的网络通信,使用JSON完全可以满足需求,但是如果要制作网络游戏,就需要建立一个持久连接,这时候就要考虑使用socket. 在iOS上实现socket大体有两种方法,一是借助自 ...
- 谈一谈socket与java
用java中socket实现socket聊天 1, 什么是socket Socket 是指网络套接字,什么是套接字呢? 这是网络上一种端对端的网络协议,端口就是进程号,socket在网 ...
- Python网络编程socket
网络编程之socket 看到本篇文章的题目是不是很疑惑,what is this?,不要着急,但是记住一说网络编程,你就想socket,socket是实现网络编程的工具,那么什么是socket,什么是 ...
- [Golang] 从零開始写Socket Server(3): 对长、短连接的处理策略(模拟心跳)
通过前两章,我们成功是写出了一套凑合能用的Server和Client,并在二者之间实现了通过协议交流.这么一来,一个简易的socket通讯框架已经初具雏形了,那么我们接下来做的.就是想办法让这个框架更 ...
- Python进阶----SOCKET套接字基础, 客户端与服务端通信, 执行远端命令.
Python进阶----SOCKET套接字基础, 客户端与服务端通信, 执行远端命令. 一丶socket套接字 什么是socket套接字: 专业理解: socket是应用层与TCP/IP ...
随机推荐
- c#加"\n\r"不换行,变成字符串
质检模块,本想将每个错误分行, 比如:lyrerrormess += lyrname + "图层" + "缺少" + xmlFieldName + " ...
- jQuery -- 监听input、textarea输入框值变化
$('textarea').bind('input propertychange', function(){ if($(".textareachange").val() != &q ...
- 【PyQt5-Qt Designer】QProgressBar() 进度条
QProgressBar() 进度条 QProgressBar简介 QProgressBar小部件提供了一个水平或垂直的进度条. 进度条用于向用户指示操作的进度,并向他们保证应用程序仍在运行. 进度条 ...
- Jenkins tomcat打包启动脚本,待完善
shell脚本 #!/bin/bashJENKINS_HOME=/usr/local/jenkinsTOMCAT_HOME=/usr/local/jenkins/tomcat-testSHUTDOWN ...
- 为什么mysql 5.7.24启停不显示错误信息?log-error_verbosity参数
关键词:log-error_verbosity ,mysql启停没有信息,mysql启停不显示错误信息,mysql不显示启停信息 原因就是因为 log-error_verbosity = 2 被设置成 ...
- (1.11)SQL优化——mysql提示(hint)
(1.11)mysql hint 关键词:mysql提示 1.SQL提示 (hint)是优化数据库的手段之一,使用它加入一些人为的提示来达到优化操作的目的: 举例: select sql_buffer ...
- left outer join的on不起作用
left outer join的on不起作用 Why and when a LEFT JOIN with condition in WHERE clause is not equivalent to ...
- docker基本原理
写的很不错的文章,作个存档 什么是容器 容器是 种轻量级.可移植的为应用程序提供了隔离的运行空间 .每个容器内都包含一个独享的完整用户环境,并且 个容器内的环境变动不会影响其他容器的运行环境,可以使应 ...
- 004-linux命令-搜索命令find、locate、whereis、which、type
一.概述 使用linux系统难免会忘记文件所在的位置,可以使用以下命令对系统中的文件进行搜索. 1.1.find 语法:find <指定目录> <指定条件> <指定动作& ...
- git bash字体设置
Git工具安装完毕之后,快速启动栏目显示有Git Bash.Git CMD和Git GUI.其中,Git Bash是跟Linux命令一样的,输入命令形式的.但是,有时输入命令显示的字体太小,需要对其进 ...