TCP编程,Socket通讯
网络编程分两种,一种是TCP编程,还有一种是UDP编程(点击打开链接)。而本文先讲述简单的TCP编程,Socket套接字连接通讯,实现简单的client与server之间的信息传输。
以下是client与server之间简单的传输数据(单对单):
注意:服务端先启动。然后再启动client。
client:
public class C {
public static void main(String[] args) {
try {
Socket s = new Socket("172.18.122.64", 10086); //訪问服务端是本地server,port号是10086,要同样
if(s.isConnected()){
System.out.println("client成功连接");
}
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
Scanner in = new Scanner(System.in);
/*GetMsg get = new GetMsg(s);
get.start();*/
while(true){
String s1 = in.next();
if(s1.equals("exit")){
break;
}
bw.write(s1);
bw.newLine();
bw.flush();
}
bw.close();
s.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }
服务端:
public class S {
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(10086); //服务端,port是10086
Socket s = server.accept(); //開始监听连入的客户port
String clientip = s.getInetAddress().getHostAddress(); //获得客户端ip地址
System.out.println("连入服务器的是来自:"+clientip);
boolean flag = true;
GetMsg get = new GetMsg(s);
get.start();
/*SendMsg send = new SendMsg(s);
send.start();*/
while(flag){ }
s.close();
server.close(); } catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
public class GetMsg extends Thread {
private Socket s;
public GetMsg(Socket s){
this.s = s;
}
@Override
public void run() {
// TODO Auto-generated method stub
BufferedReader br;
String str;
try {
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
boolean flag = true;
while(flag){
if((str=br.readLine())!=null){
System.out.println(str);
}
}
br.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }
实验结果:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
以上实现的是client与server端一对一之间的通讯。也能够实现多人聊天的功能,而server在这之间的角色就相当于中介。负责转发信息。假设须要多人聊天的能够留下邮箱或qq号我发给你。
TCP编程,Socket通讯的更多相关文章
- python 网络编程 TCP/IP socket UDP
TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...
- 【Socket编程】通过Socket实现TCP编程
通过Socket实现TCP编程 Socket通信 : 1.TCP协议是面向对象连接.可靠的.有序的,以字节流的方式发送数据. 2.基于TCP协议实现网络通信的类: 客户端----Socket类 服务器 ...
- Python网络编程socket
网络编程之socket 看到本篇文章的题目是不是很疑惑,what is this?,不要着急,但是记住一说网络编程,你就想socket,socket是实现网络编程的工具,那么什么是socket,什么是 ...
- 36 - 网络编程-TCP编程
目录 1 概述 2 TCP/IP协议基础 3 TCP编程 3.1 通信流程 3.2 构建服务端 3.3 构建客户端 3.4 常用方法 3.4.1 makefile方法 3.5 socket交互 3.4 ...
- TCP网络编程(Socket通讯)
TCP 网路编程: 1.TCP 三次握手: 第一次握手,客户端向服务器端发出连接请求,等待服务器确认. 第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求. 第三次握手,客户端再次向服 ...
- JAVA与网络开发(TCP:Socket、ServerSocket;UDP:DatagramSocket、DatagramPacket;多线程的C/S通讯、RMI开发概述)
通过TCP建立可靠通讯信道 1)为了对应TCP协议里的客户端和服务器端,Socket包提供了Socket类和ServerSocket类. 2)Socket类构造函数及相关方法 Public Socke ...
- tcp/udp socket编程异同
一.TCP与UDP的区别 基于连接与无连接 对系统资源的要求(TCP较多,UDP少) UDP程序结构较简单 流模式与数据报模式 TCP保证数据正确性,UDP可能丢包 TCP保证数据顺序,UDP不保证 ...
- TCP建立与断开连接、socket通讯模板
在传输层,有一个重点是TCP传输时建立连接的三次"握手"和四次"挥手",因为socket工作于应用层和传输层之间,故而涉及到建立连接和关闭连接的过程,以下笔记可 ...
- 网络编程懒人入门(八):手把手教你写基于TCP的Socket长连接
本文原作者:“水晶虾饺”,原文由“玉刚说”写作平台提供写作赞助,原文版权归“玉刚说”微信公众号所有,即时通讯网收录时有改动. 1.引言 好多小白初次接触即时通讯(比如:IM或者消息推送应用)时,总是不 ...
随机推荐
- 开源 SHOPNC B2B2C结算营运版 wap IM客服 API 手机app 短信通知
源码我们这里简单的测试了下,具体的请自行下载测试.这套源码官方售价很高,在这里完全免费分享,无任何限制,安装也简单. 源码下载后请自行检测安全,在使用过程中发生的任何问题请自行处理,本站不承担任何责任 ...
- (剑指Offer)面试题37:两个链表的第一个公共结点
题目: 输入两个链表,找出它们的第一个公共结点. 链表结点的定义如下: struct ListNode{ int val; ListNode* next; ListNode(int x):val(x) ...
- 云计算之路-阿里云上-新发现:又一种与虚拟内存有关的CPU波动情况
在云上真是无奇不有,昨天偶然间发现在IIS的应用程序池回收设置中,仅仅设置了一下基于虚拟内存限制的回收,就引发了CPU有规律的波动.在这篇博文中,我们将向大家汇报一下云计算之路上的这个小发现. 在之前 ...
- Quartz JobStore管理Job
Quartz提供了RAMJobStore和JDBC JobStore两种方式用来Job,RAMJobStore将Job任务存入内存中,速度快:JobStore采用数据库的方式管理中,本文介绍JobSt ...
- .Net Framemwork 之 值类型和引用类型的存储
C#把数据类型分为两种:值类型 和 引用类型.值类型存储在堆栈中,而引用类型存储在托管堆上. 一.值类型和引用类型变量的存储 首先,变量是存储信息的基本单元,而对于计算机内部来说,变量就相当于一块内存 ...
- JQUERY插件学习之jQuery UI
jQuery UI:http://jqueryui.com/ jQuery UI介绍: jQuery UI 是以 jQuery 为基础的开源 JavaScript 网页用户界面代码库.包含底层用户交互 ...
- angular中使用promise
promise是一种用异步的方式处理值的方法,promise是对象,代表了一个函数最终可能的返回值或者抛出的异常,在与远程对象打交道时我们可以把他看作是远程对象的一个代理. 如果说是promise也是 ...
- html热点区域
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 【VBA编程】04.使用自定义数据类型
使用自定义数据类型存储输入数据,并通过弹出窗口展示 [代码区域] Type lianxiren ' name As String Sex As String End Type Sub aa() Dim ...
- PHP中文乱码的常见解决方法总结
PHP中文乱码是PHP开发中的常见问题之一.PHP中文乱码有时发生在网页本身,有些产生在于MySQL交互的过程中,有时与操作系统有关.下面进行一番总结. 一.首先是PHP网页的编码 1. php文件本 ...