Java TCP程序设计示例

客户端套接字

Socket(String host, int port)           创建一个流套接字并将其连接到指定主机上的指定端口号。

OutputStream

getOutputStream()           返回此套接字的输出流。

InputStream

getInputStream()           返回此套接字的输入流。

服务器套接字

ServerSocket(int port)           创建绑定到特定端口的服务器套接字。

Socket

accept()           侦听并接受到此套接字的连接。

注意先运行服务器代码,再运行客户端

客户端代码,打开一个eclipse编写

package defaul;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;


public class Server {
	public static void main(String[] args)  {
		try {
			ServerSocket socket = new ServerSocket(1100);//创建服务器套接字
			System.out.println("服务器启动成功,等待客户端接入...");
			Socket client = socket.accept();//等待用户接入
			System.out.println("有客户端接入"+client.getInetAddress());
			OutputStream os = client.getOutputStream();
			String string = "客户端你好,我是服务器";
			os.write(string.getBytes());
			
			InputStream is = (InputStream) client.getInputStream();
			byte[] bt = new byte[1024];
			int len = is.read(bt);
			String string2 = new String(bt,0,len);
			System.out.println(string2);
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 服务器也打开一个Eclipse

import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
import java.io.OutputStream;


public class Client {
	public static void main(String[] args){
		try {
			Socket client = new Socket("127.0.0.1",1100);//创建套接字,指定服务器地址
			System.out.println("连接成功");
			
			InputStream is = client.getInputStream();
			byte[] bt = new byte[1024];
			int len = is.read(bt);
			String data = new String(bt, 0, len);
			System.out.println("服务器发来消息"+data);
			
			OutputStream os = (OutputStream) client.getOutputStream();
			String a = "你好服务器";
			os.write(a.getBytes());
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏JAVA同学会

使用Spring的@Async创建异步方法

在开发系统的过程中,通常会考虑到系统的性能问题,提升系统性能的一个重要思想就是“串行”改“并行”。说起“并行”自然离不开“异步”,今天我们就来聊聊如何使用Spr...

24130
来自专栏木溪知识加油站

笔记——安卓消息机制Handler(十六)

1、定义:Android的消息机制主要是指Handler的运行机制,Handler并不是专门用于更新UI的,它只是常被开发者用来更新UI,是同一个进程中线程间的...

12440
来自专栏JAVA同学会

自制权限框架(一)jsp标签

在我们的系统中,很多时候都用到了权限。最简单的权限就是登录。登录了,我就可以自己的相关信息;没有登录,就不能看到。

16520
来自专栏一名合格java开发的自我修养

本人毕业设计系统附完整文档和项目代码

大四期间9月到11月写的毕业系统,仿照百度文库设计的,融合了session共享,nginx负载均衡,lucene全文检索,敏感词过滤算法,office文件转pd...

46110
来自专栏祝威廉

ServiceFramework作为Java Web框架都有哪些不错的设计

最近需要开发一个纯API的项目,mlsql-cluster,从无到有,到最后完整的proxy功能开发完毕,只花了四个小时不到,自己不尽小感叹了一把 Servic...

10320
来自专栏一名合格java开发的自我修养

flink1.7自定义source实现

数据的来源是flink程序从中读取输入的地方。我们可以使用StreamExecutionEnvironment.addSource(sourceFunction...

15330
来自专栏JAVA同学会

自制权限框架(二)注解

  上一篇中,咱们介绍了如何使用jsp自定义标签编写权限框架。在jsp中,权限标签内的内容,只有在用户拥有权限的时候,才能够正常的展示。

13720
来自专栏fixzd

使用ArrayList时代码内部发生了什么(jdk1.7)?

ArrayList(这里的ArrayList是基于jdk1.7)是在项目中经常使用的集合类,例如我们从数据库中查询出一组数据。这篇文章不去剖析它的继承和实现,只...

9220
来自专栏JAVA同学会

JAVA9模块化详解(一)——模块化的定义

java9已经出来有一段时间了,今天向大家介绍一下java9的一个重要特性——模块化。模块化系统的主要目的如下:

10310
来自专栏JAVA同学会

JAVA9模块化详解(二)——模块的使用

各自的模块可以在模块工件中定义,要么就是在编译期或者运行期嵌入的环境中。为了提供可靠的配置和强健的封装性,在分块的模块系统中利用他们,必须确定它们的位置,然后...

11420

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励