network-scoket
server:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets; namespace net_server
{
class Program
{
static void Main(string[] args)
{
int get = ;
const int size = ;
Console.WriteLine("Server is Running...");
IPAddress ip = new IPAddress(new byte []{,,,});
//IPAddress ip = Dns.GetHostEntry("localhost").AddressList[0]; //另一种获取ip的方法
TcpListener listener = new TcpListener(ip, );
listener.Start();
Console.WriteLine("start listenering ..."); TcpClient remoteclient = listener.AcceptTcpClient();//获取侦听,返回一个TcpClient
Console.WriteLine("client connected!{0}<---{1}", remoteclient.Client.LocalEndPoint, remoteclient.Client.RemoteEndPoint); NetworkStream streamtoclient = remoteclient.GetStream();//得到客户端的数据流
do
{
byte[] buffer = new byte[size];
try
{
lock (streamtoclient)
{
get = streamtoclient.Read(buffer, , size);//获得长度,这个方法是同步的,只有客户端发送数据才会执行,否则便会一直等待
}
Console.WriteLine("get ,{0} byte", get); //获得请求字符创
string msg = Encoding.Unicode.GetString(buffer, , size);
Console.WriteLine("read:{0}", msg); msg = msg.ToUpper();
buffer = Encoding.Unicode.GetBytes(msg);
lock (streamtoclient)
{
streamtoclient.Write(buffer, , buffer.Length);
}
Console.WriteLine("send:{0}", msg);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
break;
}
} while (true);
streamtoclient.Dispose();
remoteclient.Close(); Console.WriteLine("\n\n输入\"Q\"键退出。");
ConsoleKey key;
do
{
key = Console.ReadKey(true).Key;
} while (key != ConsoleKey.Q);
}
}
}
client:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;
namespace net_client
{
class Program
{
static void Main(string[] args)
{
const int size = ;
Console.WriteLine("Client is running...");
TcpClient client ;
try
{
client = new TcpClient();
client.Connect("127.0.0.1", );
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return;
}
Console.WriteLine("Server connected!{0}--->{1}", client.Client.LocalEndPoint, client.Client.RemoteEndPoint); NetworkStream streamtoserver = client.GetStream();
ConsoleKey keys;
do
{
keys = Console.ReadKey (true).Key;
if (keys == ConsoleKey.A)//当按下A键可以开始输入发送内容
{
string msg = Console.ReadLine();
byte[] buffer = Encoding.Unicode.GetBytes(msg);
try
{
lock (streamtoserver)
{
streamtoserver.Write(buffer, , buffer.Length);
}
Console.WriteLine("send :{0}", msg); int byteread = ;
buffer = new byte[size];
lock(streamtoserver )
{
byteread = streamtoserver .Read (buffer ,,size);
} msg = Encoding .Unicode.GetString (buffer ,,byteread );
Console .WriteLine ("server con:{0}",msg );
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}while(keys!=ConsoleKey.E);
streamtoserver.Dispose();
client.Close(); //Console.WriteLine("\n\n输入\"Q\"键退出。");
//ConsoleKey key;
//do
//{
// key = Console.ReadKey(true).Key;
//} while (key != ConsoleKey.Q); }
}
}
network-scoket的更多相关文章
- Recurrent Neural Network系列1--RNN(循环神经网络)概述
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...
- 创建 OVS flat network - 每天5分钟玩转 OpenStack(134)
上一节完成了 flat 的配置工作,今天创建 OVS flat network.Admin -> Networks,点击 "Create Network" 按钮. 显示创建页 ...
- 在 ML2 中配置 OVS flat network - 每天5分钟玩转 OpenStack(133)
前面讨论了 OVS local network,今天开始学习 flat network. flat network 是不带 tag 的网络,宿主机的物理网卡通过网桥与 flat network 连接, ...
- OVS local network 连通性分析 - 每天5分钟玩转 OpenStack(132)
前面已经创建了两个 OVS local network,今天详细分析它们之间的连通性. launch 新的 instance "cirros-vm3",网络选择 second_lo ...
- 再部署一个 instance 和 Local Network - 每天5分钟玩转 OpenStack(131)
上一节部署了 cirros-vm1 到 first_local_net,今天我们将再部署 cirros-vm2 到同一网络,并创建 second_local_net. 连接第二个 instance 到 ...
- 创建 OVS Local Network - 每天5分钟玩转 OpenStack(129)
上一节我们完成了 OVS 的准备工作,本节从最基础的 local network 开始学习.local network 不会与宿主机的任何物理网卡连接,流量只被限制在宿主机内,同时也不关联任何的 VL ...
- Configure a bridged network interface for KVM using RHEL 5.4 or later?
environment Red Hat Enterprise Linux 5.4 or later Red Hat Enterprise Linux 6.0 or later KVM virtual ...
- BZOJ 1146: [CTSC2008]网络管理Network [树上带修改主席树]
1146: [CTSC2008]网络管理Network Time Limit: 50 Sec Memory Limit: 162 MBSubmit: 3522 Solved: 1041[Submi ...
- [Network Analysis] 复杂网络分析总结
在我们的现实生活中,许多复杂系统都可以建模成一种复杂网络进行分析,比如常见的电力网络.航空网络.交通网络.计算机网络以及社交网络等等.复杂网络不仅是一种数据的表现形式,它同样也是一种科学研究的手段.复 ...
- POJ 1966 Cable TV Network
Cable TV Network Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 4702 Accepted: 2173 ...
随机推荐
- 使用Visual C ++和Open Folder自定义环境
使用Visual C ++和Open Folder自定义环境 来源 https://blogs.msdn.microsoft.com/vcblog/2016/10/05/bring-your-c-co ...
- 【转】C# Datatable排序与取前几行数据
转自:http://www.cnblogs.com/linyechengwei/archive/2010/06/14/1758337.html http://blog.csdn.net/smartsm ...
- BZOJ3864 & HDU4899:Hero meet devil——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=3864 http://acm.hdu.edu.cn/showproblem.php?pid=4899 ...
- BZOJ4943 & 洛谷3823 & UOJ315:[NOI2017]蚯蚓排队——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4943 http://uoj.ac/problem/315 https://www.luogu.or ...
- BZOJ4870:[SHOI2017]组合数问题——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=4870 https://www.luogu.org/problemnew/show/P3746 看网上 ...
- hdu 5625
Clarke and chemistry Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Oth ...
- bzoj 1468 Tree 点分
Tree Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1972 Solved: 1101[Submit][Status][Discuss] Desc ...
- oracle xml操作
/*=====================生成\修改xml========================= */ --xmlelement多个标签层级 SELECT XMLELEMENT(& ...
- linux查看文件相关指令
以下内容整理自以下两篇文章: http://www.cnblogs.com/xilifeng/archive/2012/10/13/2722596.html Linux 查看文件内容的命令 http: ...
- js处理时间的那些事
我们在实际需求中一般需要对时间进行相应的出来,比如:对时间串的拆分显示,两个时间差的求值显示等. 时间拆分: 一般对于这种处理我们使用正则表示式: 正则表达式拆分时间: var date = data ...