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的更多相关文章

  1. Recurrent Neural Network系列1--RNN(循环神经网络)概述

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...

  2. 创建 OVS flat network - 每天5分钟玩转 OpenStack(134)

    上一节完成了 flat 的配置工作,今天创建 OVS flat network.Admin -> Networks,点击 "Create Network" 按钮. 显示创建页 ...

  3. 在 ML2 中配置 OVS flat network - 每天5分钟玩转 OpenStack(133)

    前面讨论了 OVS local network,今天开始学习 flat network. flat network 是不带 tag 的网络,宿主机的物理网卡通过网桥与 flat network 连接, ...

  4. OVS local network 连通性分析 - 每天5分钟玩转 OpenStack(132)

    前面已经创建了两个 OVS local network,今天详细分析它们之间的连通性. launch 新的 instance "cirros-vm3",网络选择 second_lo ...

  5. 再部署一个 instance 和 Local Network - 每天5分钟玩转 OpenStack(131)

    上一节部署了 cirros-vm1 到 first_local_net,今天我们将再部署 cirros-vm2 到同一网络,并创建 second_local_net. 连接第二个 instance 到 ...

  6. 创建 OVS Local Network - 每天5分钟玩转 OpenStack(129)

    上一节我们完成了 OVS 的准备工作,本节从最基础的 local network 开始学习.local network 不会与宿主机的任何物理网卡连接,流量只被限制在宿主机内,同时也不关联任何的 VL ...

  7. 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 ...

  8. BZOJ 1146: [CTSC2008]网络管理Network [树上带修改主席树]

    1146: [CTSC2008]网络管理Network Time Limit: 50 Sec  Memory Limit: 162 MBSubmit: 3522  Solved: 1041[Submi ...

  9. [Network Analysis] 复杂网络分析总结

    在我们的现实生活中,许多复杂系统都可以建模成一种复杂网络进行分析,比如常见的电力网络.航空网络.交通网络.计算机网络以及社交网络等等.复杂网络不仅是一种数据的表现形式,它同样也是一种科学研究的手段.复 ...

  10. POJ 1966 Cable TV Network

    Cable TV Network Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 4702   Accepted: 2173 ...

随机推荐

  1. android内核源码下载和编译

    1.下载编译 新建kernel目录 ~/srcAndroid/src4.4.4_r1/kernel目录下,输入命令: seven@ThinkPad:~/srcAndroid/src4.4.4_r1/k ...

  2. 【ST表】【模板】ST表

    Definition ST表是一种用于处理静态RMQ问题(无修改区间最值问题)的最快数据结构,书写方便使用简单效率便捷.其中其预处理复杂度为O(nlogn),查询复杂度为O(1).总时间复杂度为O(n ...

  3. 如何按需动态加载js文件

    JavaScript无非就是script标签引入页面,但当项目越来越大的时候,单页面引入N个js显然不行,合并为单个文件减少了请求数,但请求的文件体积却很大.这时候最好的做法就是按需引入,动态引入组件 ...

  4. ACE线程管理机制-并发控制(4)

    转载于:http://www.cnblogs.com/TianFang/archive/2006/12/04/581857.html ACE Synchronization类 这一类并发控制对象一般也 ...

  5. windows下安装git

    1.从Git官网下载windows版本的git:http://git-scm.com/downloads 2.一般使用默认设置即可:一路next,git安装完毕! 3.但是如果这时你打开windows ...

  6. bzoj 2095 [Poi2010]Bridges 判断欧拉维护,最大流+二分

    [Poi2010]Bridges Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1448  Solved: 510[Submit][Status][D ...

  7. div模拟textarea在ios下不兼容的问题解决

    今天发现一个好东西,赶紧记下来,我在用textarea的时候,想要自适应高度,这样就不会出现滚动条.网上找了很多,都是用div模拟的,但是好扯淡,div模拟的在ios下不能聚焦并且不能输入.真坑... ...

  8. Tomcat 映射虚拟目录和程序热部署

    虚拟目录的设置 方法一:在${tomcat安装目录}/conf/Catalina/localhost目录下创建一个xml文件,任意文件名都可以,但是此文件名是web应用发布后的虚拟目录: 比如创建一个 ...

  9. HDU 5643 King's Game | 约瑟夫环变形

    经典约瑟夫环 }; ; i<=n; i++) { f[i] = (f[i-] + k) % i; } 变形:k是变化的 #include <iostream> #include &l ...

  10. vijos 1081 野生动物园 函数式线段树

    描述 cjBBteam拥有一个很大的野生动物园.这个动物园坐落在一个狭长的山谷内,这个区域从南到北被划分成N个区域,每个区域都饲养着一头狮子.这些狮子从北到南编号为1,2,3,…,N.每头狮子都有一个 ...