本来已经放弃编程了,那时我发誓再也不去IT培训班了,如果找不到工作,我就去工地上打工。可心有不甘,老是惦记着,我不想天天面对生产线,做一个丧失思考能力的操作工,可后来呀,还是走上了程序员之路。。。这么多年了,接触到C#的socket编程,可我还能感受到当时想去洋谷科技而又不能的那种无奈,迷茫。

我不会Java,仅用C#来说明,用socket实现聊天功能,代码是网上抄的,但可以说明当年我感觉高深的socket编程

Server:

 using System;
using System.Net;
using System.Net.Sockets;
using System.IO; namespace TCPServer
{
class Program
{
static void Main(string[] args)
{
TcpClient client=null;
try
{
IPAddress myIp=IPAddress.Parse("127.0.0.1");
TcpListener myServer = new TcpListener(myIp, ); myServer.Start();
Console.WriteLine("Wait for client's connection...."); client = myServer.AcceptTcpClient();
Console.WriteLine("Client is already connected..."); NetworkStream stream = client.GetStream();
StreamReader sr = new StreamReader(stream);
StreamWriter sw = new StreamWriter(stream); while(true)
{
Console.WriteLine("\nClient:\n" + sr.ReadLine()+"\n");
Console.WriteLine("Server:");
string msg= Console.ReadLine();
sw.WriteLine(msg);
sw.Flush();
}
}
catch
{
if(client!=null)
{
client.Dispose();
}
}
}
}
}

Client:

 using System;
using System.IO;
using System.Net;
using System.Net.Sockets; namespace TCPClient
{
class Program
{
static void Main(string[] args)
{
TcpClient client=null;
try
{
IPAddress myIp = IPAddress.Parse("127.0.0.1");
client = new TcpClient();
client.Connect(myIp, );
Console.WriteLine("server connected...please enter contact content..."); NetworkStream stream = client.GetStream();
StreamReader sr = new StreamReader(stream);
StreamWriter sw = new StreamWriter(stream); while (true)
{
Console.WriteLine("Client:");
string msg = Console.ReadLine();
sw.WriteLine(msg);
sw.Flush();
Console.WriteLine("\nServer:\n" + sr.ReadLine()+"\n");
}
}
catch
{
if(client!=null)
{
client.Dispose();
}
}
}
}
}

先运行Server端

看到Wait for client's connection... 后,运行client端

然后,client端发送信息"Hi Server, I am from client."到server端,server端收到client发来的消息

然后,server端发送信息"Hi Client, I am from Server."到client端,client端收到server发来的消息

按Ctrl+c先后中断客户端和服务端。

8年前,令我窒息的Java socket体验学习的更多相关文章

  1. JAVA Socket 编程学习笔记(二)

    在上一篇中,使用了 java Socket+Tcp/IP  协议来实现应用程序或客户端--服务器间的实时双向通信,本篇中,将使用 UDP 协议来实现 Socket 的通信. 1. 关于UDP UDP协 ...

  2. JAVA Socket 编程学习笔记(一)

    1. Socket 通信简介及模型 Java Socket 可实现客户端--服务器间的双向实时通信.java.net包中定义的两个类socket和ServerSocket,分别用来实现双向连接的cli ...

  3. java socket初步学习一 ( tcp)

    Java socket通信程序: 第一版本: 实现功能: 服务器地址:127.0.0.1  端口:5050 客户机:端口5050 客户端发送字符:“t” 服务器接收到该字符并回复:“r” 流程: 建立 ...

  4. 是时候了解Java Socket底层实现了

    在Java中,提供了一系列Socket API,可以轻松建立两个主机之间的连接.读取数据,那底层到底怎么实现,很少人去关心.这其实最终还是通过调用操作系统提供得Socket接口完成(TCP/IP是由操 ...

  5. JAVA通信系列一:Java Socket技术总结

    本文是学习java Socket整理的资料,供参考. 1       Socket通信原理 1.1     ISO七层模型 1.2     TCP/IP五层模型 应用层相当于OSI中的会话层,表示层, ...

  6. Java Socket Server的演进 (一)

    最近在看一些网络服务器的设计, 本文就从起源的角度介绍一下现代网络服务器处理并发连接的思路, 例子就用java提供的API. 1.单线程同步阻塞式服务器及操作系统API 此种是最简单的socket服务 ...

  7. JAVA Socket超时浅析

    JAVA Socket超时浅析 套接字或插座(socket)是一种软件形式的抽象,用于表达两台机器间一个连接的"终端".针对一个特定的连接,每台机器上都有一个"套接字&q ...

  8. Java Socket编程题库

    一.    填空题 ___ IP地址____用来标志网络中的一个通信实体的地址.通信实体可以是计算机,路由器等. 统一资源定位符URL是指向互联网"资源"的指针,由4部分组成:协议 ...

  9. Java Socket编程(转)

    Java Socket编程 对于Java Socket编程而言,有两个概念,一个是ServerSocket,一个是Socket.服务端和客户端之间通过Socket建立连接,之后它们就可以进行通信了.首 ...

随机推荐

  1. .net core 2.2 部署CentOS7(5)部署.net core mvc

    目录: .net core 2.2 部署CentOS7(1)安装虚拟机 .net core 2.2 部署CentOS7(2)给虚拟机安装CentOS7 .net core 2.2 部署CentOS7( ...

  2. 哪个类可用于处理 Unicode?

    A. InputStreanReader的构造函数: InputStreamReader(InputStream in)          创建一个使用默认字符集的 InputStreamReader ...

  3. Python写随机发红包的原理流程

    首先来说说要用到的知识点,第一个要说的是扩展包random,random模块一般用来生成一个随机数 今天要用到ramdom中unifrom的方法用于生成一个指定范围的随机浮点数通过下面的图简单看下: ...

  4. SQL事务在存储过程的应用

    -- ============================================= -- Author: jf_ou -- Create date: 2017-08-22 -- Desc ...

  5. css-使不同大小的图片在固定大小的容器中居中

    HTML示例如下: <ul> <li class="imgbox"><img src="img1.jpg"></li& ...

  6. css实现div不定宽高垂直水平居中解决方案

    在项目中我们经常能碰见然图片垂直水平居中,不定宽高的div垂直水平居中,等等~~ 现在我将介绍我所知道的几种用css来解决的几种方案. 1.父元素text-align:center;display:t ...

  7. OnCreateContextMenuListener接口简介

    OnCreateContextMenuListener接口是用来处理上下文菜单显示事件的监听接口.该方法是定义和注册上下文菜单的另一种方式.该接口中事件处理的回调方法签名如下所示. public vo ...

  8. Week4——Hello.java分析

    如下图源码所示: 该段代码声明了一个entity实体类,该类有一个变量name,对该变量写了对应的get和set方法.类中还有一个空的构造方法hello(). @RequestScoped用于指定一个 ...

  9. Python 面向对象(一)

    面向过程编程 (Procedural Programming) Prodcedural programming uses a list of instructions to tell the comp ...

  10. 7.log4j2的使用

    一.简介 log4j2相对于log4j 1.x有了脱胎换骨的变化,其官网宣称的优势有多线程下10几倍于log4j 1.x和logback的高吞吐量.可配置的审计型日志.基于插件架构的各种灵活配置等.如 ...