8年前,令我窒息的Java socket体验学习
本来已经放弃编程了,那时我发誓再也不去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体验学习的更多相关文章
- JAVA Socket 编程学习笔记(二)
在上一篇中,使用了 java Socket+Tcp/IP 协议来实现应用程序或客户端--服务器间的实时双向通信,本篇中,将使用 UDP 协议来实现 Socket 的通信. 1. 关于UDP UDP协 ...
- JAVA Socket 编程学习笔记(一)
1. Socket 通信简介及模型 Java Socket 可实现客户端--服务器间的双向实时通信.java.net包中定义的两个类socket和ServerSocket,分别用来实现双向连接的cli ...
- java socket初步学习一 ( tcp)
Java socket通信程序: 第一版本: 实现功能: 服务器地址:127.0.0.1 端口:5050 客户机:端口5050 客户端发送字符:“t” 服务器接收到该字符并回复:“r” 流程: 建立 ...
- 是时候了解Java Socket底层实现了
在Java中,提供了一系列Socket API,可以轻松建立两个主机之间的连接.读取数据,那底层到底怎么实现,很少人去关心.这其实最终还是通过调用操作系统提供得Socket接口完成(TCP/IP是由操 ...
- JAVA通信系列一:Java Socket技术总结
本文是学习java Socket整理的资料,供参考. 1 Socket通信原理 1.1 ISO七层模型 1.2 TCP/IP五层模型 应用层相当于OSI中的会话层,表示层, ...
- Java Socket Server的演进 (一)
最近在看一些网络服务器的设计, 本文就从起源的角度介绍一下现代网络服务器处理并发连接的思路, 例子就用java提供的API. 1.单线程同步阻塞式服务器及操作系统API 此种是最简单的socket服务 ...
- JAVA Socket超时浅析
JAVA Socket超时浅析 套接字或插座(socket)是一种软件形式的抽象,用于表达两台机器间一个连接的"终端".针对一个特定的连接,每台机器上都有一个"套接字&q ...
- Java Socket编程题库
一. 填空题 ___ IP地址____用来标志网络中的一个通信实体的地址.通信实体可以是计算机,路由器等. 统一资源定位符URL是指向互联网"资源"的指针,由4部分组成:协议 ...
- Java Socket编程(转)
Java Socket编程 对于Java Socket编程而言,有两个概念,一个是ServerSocket,一个是Socket.服务端和客户端之间通过Socket建立连接,之后它们就可以进行通信了.首 ...
随机推荐
- before(),after(),prepend(),append()等新DOM方法简介
一.DOM API也在不断升级 web前端标准一直在不断升级,比方说,说了很多年的HTML5.CSS3,以及天天见的ES6. 然后,似乎就没有然后了.实际上,除了HTML5/CSS3/ES6+,关于D ...
- Builder 设计模式的学习
Buileder(生成器)—对象创建型模式 一 意图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 二 适用性 在以下情况使用Build模式: 1 当创建复杂对象的算法应 ...
- Quiver快速入门
Quiver快速入门 装载自:https://github.com/HappenApps/Quiver/wiki/Quiver%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8 ...
- Django基础五之django模型层(一)单表操作
一 ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人 ...
- thinkPHP3.2.2 控制器内跳转的三种方式
public function jump() { $obj = new TestController(); $obj->logged(); } public function jump1() { ...
- 详解php 获取文件名basename()函数的用法
PHP 中basename()函数给出一个包含有指向一个文件的全路径的字符串,此函数返回基本的文件名,本篇文章收集了关于使用PHP basename()函数获取文件名的几篇文章,希望对大家理解使用PH ...
- HTML meta标签总结,HTML5 head meta属性整理
原文链接:http://caibaojian.com/mobile-meta.html <!DOCTYPE html> <!-- 使用 HTML5 doctype,不区分大小写 -- ...
- VMware桥接模式下主机和和虚机间互相ping不通的处理方法
在 "编辑"->"虚拟网络编辑器" 里面的vmnet0 桥接模式 里面是自动连接,把他改为真实的物理网卡即可,如下图:
- Global Average Pooling Layers for Object Localization
For image classification tasks, a common choice for convolutional neural network (CNN) architecture ...
- Java 实验案例(类和对象篇)
实验任务 任务一:手机类的封装 任务二:基于控制台的购书系统 任务三:简单的投票程序 实验内容 任务一:手机类的封装 任务目的 理解和掌握面向对象的设计过程 掌握类的结构和定义过程 掌握构造方法及其重 ...