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建立连接,之后它们就可以进行通信了.首 ...
随机推荐
- SQL查询几种的区别。
最近看了几篇SQL查询的文章做一下总结哦,大概简记如下: SQL查询的实质是,是指从数据库中取得数据的子集,可以先取列子集,然后再取符合条件的行子集. 1.单表查询: SELECT [Name] ,[ ...
- MFC动态时间表示法——strtime函数
%a 星期几的简写 %A 星期几的全称 %b 月分的简写 %B 月份的全称 %c 标准的日期的时间串 %C 年份的后两位数字 %d 十进制表示的每月的第几天 %D 月/天/年 %e 在两字符域中,十进 ...
- Java Tools &Tools APIs
java 启动Java应用程序 javac Java编译器javac读取用Java编写的源文件,并将它们编译为字节码类文件. 用法: javac <options> <source ...
- Java数据类型和不同数据类型在JVM内存分配
1.java数据类型分类 Java语言是强类型(Strongly typed)语言,强类型包含两方面的含义:①所有的变量必须先声明,后使用:②指定类型的变量只能接受类型与之匹配的值.这意味着每个变量和 ...
- 二进制GCD算法 减少%的时间消耗
/* 二进制求最大公约数.由于传统的GCD,使用了%,在计算机运行过程中要花费大量的时间,所以,采取二进制的求法,来减少时间的消耗. 算法: 当a,b都是偶数时: gcd(a,b)=2*gcd(a/2 ...
- PL/SQL Developer 如何记住密码
前言:使用时总结一下. 问题: 登录的时候不想每次都输入密码,能记住最好了. 解决方案: 1.点击配置->首选项 2.选择登录历史,勾上带口令存储,然后应用,确定即可.
- ef oracle参数化问题
并非所有变量都已绑定 假如一个sql是这样的 string sql =@" select id from a where date between :StartDate and :EndDa ...
- Bootstrap学习笔记01
1.Make Images Mobile Responsive 用处: 使图片适配你的页面宽度. 操作: 给图片添加 .img-responsive class属性. <img src= ...
- 百万级数据 MySQL处理(转)
转自 http://www.cnblogs.com/win7xt/p/3156334.html 使用MySQL处理百万级以上数据时,不得不知道的几个常识 最近一段时间参与的项目要操作百万级数据量的 ...
- opencv3.2.0形态学滤波之开运算、闭运算
/* 一.开运算: (1)开运算,其实就是先腐蚀后膨胀的过程. (2)数学表达式:dst = open(src,element) = dilate(erode(src,element)) (3)作用: ...