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 ...
随机推荐
- Python虚拟环境virtualenv的使用
virtualenv 是一个创建孤立的Python环境的工具.可以让你创建各自独立的.互不影响的Python开发环境. 使用pip安装即可 pip install virtualenv 查看是否安装成 ...
- 用css制作空心箭头(上下左右各个方向均有)
平常在网页中,经常会有空心箭头,除了用图片外,可以用css来实现.基本思路是,用css绘制两个三角形,通过绝对定位让两三角形不完全重叠,例如制作向右的空心箭头,位于前面的三角形border颜色是需要的 ...
- Elasticsearch 中文分词器IK
1.安装说明 https://github.com/medcl/elasticsearch-analysis-ik 2.release版本 https://github.com/medcl/elast ...
- POJ3469:Dual Core CPU——题解
http://poj.org/problem?id=3469 题目大意: 两个CPU,处理每个任务有不同的代价,有些对任务如果不在同一个CPU就会增加代价,求最小代价. ——————————————— ...
- [Leetcode] powx n x的n次方
Implement pow(x, n). 题意:计算x的次方 思路:这题的思路和sqrt的类似,向二分靠近.例如求4^5,我们可以这样求:res=4.4*4^4.就是将每次在res的基础上乘以x本身, ...
- 洛谷P3759 [TJOI2017]不勤劳的图书管理员 【树状数组套主席树】
题目链接 洛谷P3759 题解 树状数组套主席树板题 #include<algorithm> #include<iostream> #include<cstring> ...
- 关于string::size_type
size_type其实是string模板类定义的一种类型之一,它与size_of的用法相似,只是它根据存储的类型返回字符串的长度.对于 string具体化,将根据char返回字符串的长度,在这种情况下 ...
- bzoj 1106 [POI2007]立方体大作战tet 树状数组优化
[POI2007]立方体大作战tet Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 821 Solved: 601[Submit][Status][ ...
- Codeforces Round #407 (Div. 2) D,E
图论 D. Weird journey time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- gitlab 的使用策略和简单介绍
gitlab 作为版本控制器,基本使用和github 相同,以下是一些策略和介绍: Git 分支管理策略可以参考下面三个链接: http://www.ruanyifeng.com/blog/2012/ ...