简易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 ...
随机推荐
- CentOS7初始化mysql库报错
在centos7上安装mysql数据库,进行数据库初始化工作时,报错缺少data::dumper库文件,如下: 解决办法:安装autoconf库后重新初始化即可解决. yum-y install au ...
- cinder 和 qt5 vs2015结合
下载编译好的cinder_0.9.1_vc2013, 用vs2015打开 cinder_0.9.1_vc2013\proj\vc2013\cinder.sln 重新编译 由于我用的qt也是vs2015 ...
- [ovs] openvswitch 入门
https://www.sdnlab.com/sdn-guide/14747.html http://sdnhub.cn/index.php/openv-switch-full-guide/ http ...
- [knowledge][模式匹配] 字符匹配/模式匹配 正则表达式 自动机
字符串 T = abcabaabcabac,字符串 P = abaa,判断P是否是T的子串,就是字符串匹配问题了,T 叫做文本(Text) ,P 叫做模式(Pattern),所以正确描述是,找出所有在 ...
- [grub2] grub2修改启动顺序
https://wiki.centos.org/HowTos/Grub2#head-535f476a61e62f24bc150c73f7e0816f85345f46 1, 查看所有的entry [ro ...
- 转:Java 异常结构体系
原文地址:Java 异常结构体系 保存一份资料 前几天在参加网易和360公司的在线考试的时候,都出了一道关于java中异常类的多项选择题.这几天翻看了相关书籍和网上一些资料,结合自己的理解与思考,将自 ...
- shell脚本中sqlite3命令查询数据库失败返回空,并将错误信息打印到标准错误输出
shell脚本中sqlite3命令查询数据库失败返回空,并将错误信息打印到标准错误输出 如: #/bin/sh local ret='sqlite3 test.db "select test ...
- 【pyqtgraph绘图】如何使用pyqtgraph
解读官方API-如何使用pyqtgraph 这里有一些使用pyqtgraph的建议方法: 从交互式shell(python -i,ipython等) 从应用程序显示弹出窗口 在PyQt应用程序中嵌入小 ...
- set的经典应用
set的经典应用 刚开始用map标记一个测试点超时了 ┭┮﹏┭┮: 用set的find 减少了循环提高了效率 #include <bits/stdc++.h>using namespace ...
- C#-1-2-C#基础
1-注释符 1).单行注释符:// 2).多行注释符:/**/ 3).文档注释符:// 2-常用快捷键 3-变量类型 4-转义字符 5-语句 1.将相应内容打印到控制台:Console.WriteLi ...