今天给各位分享javatcp通信的知识,其中也会对JAVATCP通信进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、Java TCP socket通信,如何实现发送十六进制值,并在数据接收窗口中显示这些数据对应的字符串,非常感谢!2、编写一个简单的TCP通信程序。服务器发送“你好我是服务器”,客户端接收该信息并显示在屏幕上。用Java写3、java与C#进行TCP局域网通信,丢包严重,怎么解决4、java tcp通讯只能接收客户端第一次传来的数据包
Java TCP socket通信,如何实现发送十六进制值,并在数据接收窗口中显示这些数据对应的字符串,非常感谢!
我自己的电脑上有一段源代码,就是基于TCP聊天小代码,能进行相互之间的消息接受。我的代码是直接传输字符串的,不是16进制滴。嗯,也贴出来看看吧!
运行服务器,c1,c2就可以了,c1与c2可进行通信。
Client.java
import java.net.*;
public class Client{
static byte num=1;
private int portNum;
public Client(int portnum){
this.portNum=portnum;
System.out.println(“您是第”+num+”位客服端”);
num++;
}
public void sentMessage(String me){
//都是向服务器发信息端口号1999
try{
DatagramSocket ds=new DatagramSocket();
DatagramPacket dp=new DatagramPacket(me.getBytes(),me.length(),InetAddress.getByName(“127.0.0.1”),1999);
ds.send(dp);
ds.close();
}catch(Exception e){
e.printStackTrace();
}
}
public String receiveMessage(){
String str=””;
try{
DatagramSocket ds=new DatagramSocket(this.portNum);//表示哦自己的接收端口号是1999
byte[] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,1024);
ds.receive(dp);
str=new String(dp.getData(),0,dp.getLength());
ds.close();
}catch(Exception e){
e.printStackTrace();
}
return str;
}
}
c1.java
import java.util.*;
public class c1 implements Runnable{
Client cl;
boolean goon=true;
Scanner sc=new Scanner(System.in);
public c1(){
cl=new Client(2000);
System.out.println(“这里是2000客户端\n你可以发送信息。请输入要发送的信息。out退出”);
new Thread(this).start();
while(this.goon==true){
say();
}
if(goon==false){
System.exit(0);
}
}
public static void main(String[] args){
new c1();
}
public void say(){
String mess=sc.nextLine();
System.out.println(“是否发送y/n”);
String key=sc.nextLine();
if(key.equals(“y”)){
System.out.println(“信息信息发送中……”);
try{
cl.sentMessage(mess);
}catch(Exception e){
e.printStackTrace();
}
}
else if(key.equals(“out”)){
goon=false;
}
}
public void run(){
while(this.goon==true){
String sst=””;
try{
sst=cl.receiveMessage();
}catch(Exception e){
e.printStackTrace();
}
if(sst.length()0){
System.out.println(sst);
}
try{
Thread.sleep(100);
}catch(InterruptedException e){
e.printStackTrace();
}
}
System.out.println(“程序结束!”);
}
}
c2.java
import java.util.*;
public class c2 implements Runnable{
Client cl;
boolean goon=true;
Scanner sc=new Scanner(System.in);
public c2(){
cl=new Client(2001);
System.out.println(“这里是2001客户端\n你可以发送信息。请输入要发送的信息。out退出”);
new Thread(this).start();
while(goon==true){
say();
}
if(goon==false){
System.exit(0);
}
}
public static void main(String[] args){
new c2();
}
public void say(){
String mess=sc.nextLine();
System.out.println(“是否发送y/n”);
String key=sc.nextLine();
if(key.equals(“y”)){
System.out.println(“信息信息发送中……”);
try{
cl.sentMessage(mess);
}catch(Exception e){
e.printStackTrace();
}
}
else if(key.equals(“out”)){
this.goon=false;
}
}
public void run(){
while(this.goon==true){
String sst=””;
try{
sst=cl.receiveMessage();
}catch(Exception e){
e.printStackTrace();
}
if(sst.length()0){
System.out.println(sst);
}
try{
Thread.sleep(100);
}catch(InterruptedException e){
e.printStackTrace();
}
}
System.out.println(“聊天关闭!”);
}
}
Server.java
import java.net.*;
import java.util.*;
public class Server implements Runnable{
private String message;
boolean work=true;
byte tm=10;
String[] clomessage={“信息:正在断开网络连接.”,”.”,”.\n”,”信息:设置保存中……”,””,””,”完成\n”,”信息:欢迎下次使用\n”,”信息:完成\n”,”Goodbye!”};
public Server(){
new Thread(this).start();
System.out.println(“本程序为服务端Server”);
Scanner sc=new Scanner(System.in);
System.out.println(“输入命令out关闭服务器”);
String clo=sc.nextLine();
if(clo.equals(“out”)){
System.out.println(“正在关闭服务器……”);
setwork(false);
System.exit(0);
}
}
public static void main(String[] args){
new Server();
}
public void setwork(boolean bo)
{
this.work=bo;
}
public void setMessage(String str){
this.message=str;
}
public String getMessage(){
return this.message;
}
public void sentMessage(){
String mes=this.getMessage();
try{
DatagramSocket ds=new DatagramSocket();
DatagramPacket dp=new DatagramPacket(mes.getBytes(),mes.length(),InetAddress.getByName(“127.0.0.1”),2000);
DatagramPacket dp2=new DatagramPacket(mes.getBytes(),mes.length(),InetAddress.getByName(“127.0.0.1”),2001);
ds.send(dp);
ds.send(dp2);
ds.close();
System.out.println(“信息发送至:127.0.0.1:2000 127.0.0.1:2001”);
this.setMessage(“”);
}catch(Exception e){
e.printStackTrace();
}
}
public void receiveMessage() throws Exception{
try{
DatagramSocket ds=new DatagramSocket(1999);//表示哦自己的接收端口号是1999
byte[] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,1024);
ds.receive(dp);
String str=new String(dp.getData(),0,dp.getLength());
if(str.length()0){
this.setMessage(str);
System.out.println(“信息:Server从”+dp.getAddress().getHostAddress()+”主机(端口号:”+dp.getPort()+”)收到信息:”+this.getMessage());
}
ds.close();
}catch(Exception e){
e.printStackTrace();
}
}
public void run(){
while(tm0){
if(work==false){
tm–;
System.out.print(clomessage[9-tm]);
}
try{
receiveMessage();//时刻接受信息
}catch(Exception e){
e.printStackTrace();
}
if(this.getMessage().length()0){//如果接收到信息则发送信息
try{
sentMessage();
}catch(Exception e){
e.printStackTrace();
}
try{
Thread.sleep(100);
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
}
}
呵呵,请指教啊!
编写一个简单的TCP通信程序。服务器发送“你好我是服务器”,客户端接收该信息并显示在屏幕上。用Java写
1、服务器端
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketServer {
private static final int PORT = 8088;
public static void main(String[] args) {
ServerSocket server = null;
try {
server = new ServerSocket(PORT);
while (true) {
Socket client = server.accept();
new Thread(new Server(client)).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class Server implements Runnable {
private Socket client;
public Server(Socket client) {
this.client = client;
}
public void run() {
DataOutputStream output = null;
try {
output = new DataOutputStream(client.getOutputStream());
output.writeUTF(“你好我是服务器”);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (output != null) output.close();
output = null;
} catch (IOException e) {}
}
}
}
2、客户端
import java.io.DataInputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client extends Socket {
private static final int PORT = 8088;
public static void main(String[] args) {
Socket socket = null;
try {
socket = new Socket(“127.0.0.1”, PORT);
DataInputStream in = new DataInputStream(socket.getInputStream());
String res = in.readUTF();
System.out.println(res);
if (in != null) in.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (socket != null) {
try {
socket.close();
} catch (IOException e) {}
}
}
}
}
java与C#进行TCP局域网通信,丢包严重,怎么解决
应该没有这样严重的。 TCP只有在网络很差的情况下会有些数据丢掉的。 你在局域网应该还不至于俄。
多办是没有处理粘包俄。人家还没有把数据发给你就读取了。读到就会是 00
定协议把。 很简单的俄。 如 包头+数据区域的长度+数据。
这样根据长度来解析数据就不会出现粘包了。
java tcp通讯只能接收客户端第一次传来的数据包
accpet会阻塞线程直到有客户端连接,你读取的代码必须要放到另一个线程里,第二次会走到accept就阻塞了还怎么读取
javatcp通信的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于JAVATCP通信、javatcp通信的信息别忘了在本站进行查找喔。